import * as $protobuf from "protobufjs";
import Long = require("long");
/** Namespace coresdk. */
export namespace coresdk {

    /** Properties of an ActivityHeartbeat. */
    interface IActivityHeartbeat {

        /** ActivityHeartbeat taskToken */
        taskToken?: (Uint8Array|null);

        /** ActivityHeartbeat details */
        details?: (temporal.api.common.v1.IPayload[]|null);
    }

    /** A request as given to `record_activity_heartbeat` */
    class ActivityHeartbeat implements IActivityHeartbeat {

        /**
         * Constructs a new ActivityHeartbeat.
         * @param [properties] Properties to set
         */
        constructor(properties?: coresdk.IActivityHeartbeat);

        /** ActivityHeartbeat taskToken. */
        public taskToken: Uint8Array;

        /** ActivityHeartbeat details. */
        public details: temporal.api.common.v1.IPayload[];

        /**
         * Creates a new ActivityHeartbeat instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ActivityHeartbeat instance
         */
        public static create(properties?: coresdk.IActivityHeartbeat): coresdk.ActivityHeartbeat;

        /**
         * Encodes the specified ActivityHeartbeat message. Does not implicitly {@link coresdk.ActivityHeartbeat.verify|verify} messages.
         * @param message ActivityHeartbeat message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: coresdk.IActivityHeartbeat, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ActivityHeartbeat message, length delimited. Does not implicitly {@link coresdk.ActivityHeartbeat.verify|verify} messages.
         * @param message ActivityHeartbeat message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: coresdk.IActivityHeartbeat, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an ActivityHeartbeat message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ActivityHeartbeat
         * @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): coresdk.ActivityHeartbeat;

        /**
         * Decodes an ActivityHeartbeat message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ActivityHeartbeat
         * @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)): coresdk.ActivityHeartbeat;

        /**
         * Creates an ActivityHeartbeat message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ActivityHeartbeat
         */
        public static fromObject(object: { [k: string]: any }): coresdk.ActivityHeartbeat;

        /**
         * Creates a plain object from an ActivityHeartbeat message. Also converts values to other types if specified.
         * @param message ActivityHeartbeat
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: coresdk.ActivityHeartbeat, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ActivityHeartbeat to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ActivityHeartbeat
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an ActivityTaskCompletion. */
    interface IActivityTaskCompletion {

        /** ActivityTaskCompletion taskToken */
        taskToken?: (Uint8Array|null);

        /** ActivityTaskCompletion result */
        result?: (coresdk.activity_result.IActivityExecutionResult|null);
    }

    /** A request as given to `complete_activity_task` */
    class ActivityTaskCompletion implements IActivityTaskCompletion {

        /**
         * Constructs a new ActivityTaskCompletion.
         * @param [properties] Properties to set
         */
        constructor(properties?: coresdk.IActivityTaskCompletion);

        /** ActivityTaskCompletion taskToken. */
        public taskToken: Uint8Array;

        /** ActivityTaskCompletion result. */
        public result?: (coresdk.activity_result.IActivityExecutionResult|null);

        /**
         * Creates a new ActivityTaskCompletion instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ActivityTaskCompletion instance
         */
        public static create(properties?: coresdk.IActivityTaskCompletion): coresdk.ActivityTaskCompletion;

        /**
         * Encodes the specified ActivityTaskCompletion message. Does not implicitly {@link coresdk.ActivityTaskCompletion.verify|verify} messages.
         * @param message ActivityTaskCompletion message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: coresdk.IActivityTaskCompletion, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ActivityTaskCompletion message, length delimited. Does not implicitly {@link coresdk.ActivityTaskCompletion.verify|verify} messages.
         * @param message ActivityTaskCompletion message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: coresdk.IActivityTaskCompletion, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an ActivityTaskCompletion message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ActivityTaskCompletion
         * @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): coresdk.ActivityTaskCompletion;

        /**
         * Decodes an ActivityTaskCompletion message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ActivityTaskCompletion
         * @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)): coresdk.ActivityTaskCompletion;

        /**
         * Creates an ActivityTaskCompletion message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ActivityTaskCompletion
         */
        public static fromObject(object: { [k: string]: any }): coresdk.ActivityTaskCompletion;

        /**
         * Creates a plain object from an ActivityTaskCompletion message. Also converts values to other types if specified.
         * @param message ActivityTaskCompletion
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: coresdk.ActivityTaskCompletion, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ActivityTaskCompletion to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ActivityTaskCompletion
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a WorkflowSlotInfo. */
    interface IWorkflowSlotInfo {

        /** WorkflowSlotInfo workflowType */
        workflowType?: (string|null);

        /** WorkflowSlotInfo isSticky */
        isSticky?: (boolean|null);
    }

    /** Info about workflow task slot usage */
    class WorkflowSlotInfo implements IWorkflowSlotInfo {

        /**
         * Constructs a new WorkflowSlotInfo.
         * @param [properties] Properties to set
         */
        constructor(properties?: coresdk.IWorkflowSlotInfo);

        /** WorkflowSlotInfo workflowType. */
        public workflowType: string;

        /** WorkflowSlotInfo isSticky. */
        public isSticky: boolean;

        /**
         * Creates a new WorkflowSlotInfo instance using the specified properties.
         * @param [properties] Properties to set
         * @returns WorkflowSlotInfo instance
         */
        public static create(properties?: coresdk.IWorkflowSlotInfo): coresdk.WorkflowSlotInfo;

        /**
         * Encodes the specified WorkflowSlotInfo message. Does not implicitly {@link coresdk.WorkflowSlotInfo.verify|verify} messages.
         * @param message WorkflowSlotInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: coresdk.IWorkflowSlotInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified WorkflowSlotInfo message, length delimited. Does not implicitly {@link coresdk.WorkflowSlotInfo.verify|verify} messages.
         * @param message WorkflowSlotInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: coresdk.IWorkflowSlotInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a WorkflowSlotInfo message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns WorkflowSlotInfo
         * @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): coresdk.WorkflowSlotInfo;

        /**
         * Decodes a WorkflowSlotInfo message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns WorkflowSlotInfo
         * @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)): coresdk.WorkflowSlotInfo;

        /**
         * Creates a WorkflowSlotInfo message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns WorkflowSlotInfo
         */
        public static fromObject(object: { [k: string]: any }): coresdk.WorkflowSlotInfo;

        /**
         * Creates a plain object from a WorkflowSlotInfo message. Also converts values to other types if specified.
         * @param message WorkflowSlotInfo
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: coresdk.WorkflowSlotInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this WorkflowSlotInfo to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for WorkflowSlotInfo
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an ActivitySlotInfo. */
    interface IActivitySlotInfo {

        /** ActivitySlotInfo activityType */
        activityType?: (string|null);
    }

    /** Info about activity task slot usage */
    class ActivitySlotInfo implements IActivitySlotInfo {

        /**
         * Constructs a new ActivitySlotInfo.
         * @param [properties] Properties to set
         */
        constructor(properties?: coresdk.IActivitySlotInfo);

        /** ActivitySlotInfo activityType. */
        public activityType: string;

        /**
         * Creates a new ActivitySlotInfo instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ActivitySlotInfo instance
         */
        public static create(properties?: coresdk.IActivitySlotInfo): coresdk.ActivitySlotInfo;

        /**
         * Encodes the specified ActivitySlotInfo message. Does not implicitly {@link coresdk.ActivitySlotInfo.verify|verify} messages.
         * @param message ActivitySlotInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: coresdk.IActivitySlotInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ActivitySlotInfo message, length delimited. Does not implicitly {@link coresdk.ActivitySlotInfo.verify|verify} messages.
         * @param message ActivitySlotInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: coresdk.IActivitySlotInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an ActivitySlotInfo message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ActivitySlotInfo
         * @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): coresdk.ActivitySlotInfo;

        /**
         * Decodes an ActivitySlotInfo message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ActivitySlotInfo
         * @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)): coresdk.ActivitySlotInfo;

        /**
         * Creates an ActivitySlotInfo message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ActivitySlotInfo
         */
        public static fromObject(object: { [k: string]: any }): coresdk.ActivitySlotInfo;

        /**
         * Creates a plain object from an ActivitySlotInfo message. Also converts values to other types if specified.
         * @param message ActivitySlotInfo
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: coresdk.ActivitySlotInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ActivitySlotInfo to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ActivitySlotInfo
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a LocalActivitySlotInfo. */
    interface ILocalActivitySlotInfo {

        /** LocalActivitySlotInfo activityType */
        activityType?: (string|null);
    }

    /** Info about local activity slot usage */
    class LocalActivitySlotInfo implements ILocalActivitySlotInfo {

        /**
         * Constructs a new LocalActivitySlotInfo.
         * @param [properties] Properties to set
         */
        constructor(properties?: coresdk.ILocalActivitySlotInfo);

        /** LocalActivitySlotInfo activityType. */
        public activityType: string;

        /**
         * Creates a new LocalActivitySlotInfo instance using the specified properties.
         * @param [properties] Properties to set
         * @returns LocalActivitySlotInfo instance
         */
        public static create(properties?: coresdk.ILocalActivitySlotInfo): coresdk.LocalActivitySlotInfo;

        /**
         * Encodes the specified LocalActivitySlotInfo message. Does not implicitly {@link coresdk.LocalActivitySlotInfo.verify|verify} messages.
         * @param message LocalActivitySlotInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: coresdk.ILocalActivitySlotInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified LocalActivitySlotInfo message, length delimited. Does not implicitly {@link coresdk.LocalActivitySlotInfo.verify|verify} messages.
         * @param message LocalActivitySlotInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: coresdk.ILocalActivitySlotInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a LocalActivitySlotInfo message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns LocalActivitySlotInfo
         * @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): coresdk.LocalActivitySlotInfo;

        /**
         * Decodes a LocalActivitySlotInfo message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns LocalActivitySlotInfo
         * @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)): coresdk.LocalActivitySlotInfo;

        /**
         * Creates a LocalActivitySlotInfo message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns LocalActivitySlotInfo
         */
        public static fromObject(object: { [k: string]: any }): coresdk.LocalActivitySlotInfo;

        /**
         * Creates a plain object from a LocalActivitySlotInfo message. Also converts values to other types if specified.
         * @param message LocalActivitySlotInfo
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: coresdk.LocalActivitySlotInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this LocalActivitySlotInfo to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for LocalActivitySlotInfo
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a NexusSlotInfo. */
    interface INexusSlotInfo {

        /** NexusSlotInfo service */
        service?: (string|null);

        /** NexusSlotInfo operation */
        operation?: (string|null);
    }

    /** Info about nexus task slot usage */
    class NexusSlotInfo implements INexusSlotInfo {

        /**
         * Constructs a new NexusSlotInfo.
         * @param [properties] Properties to set
         */
        constructor(properties?: coresdk.INexusSlotInfo);

        /** NexusSlotInfo service. */
        public service: string;

        /** NexusSlotInfo operation. */
        public operation: string;

        /**
         * Creates a new NexusSlotInfo instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NexusSlotInfo instance
         */
        public static create(properties?: coresdk.INexusSlotInfo): coresdk.NexusSlotInfo;

        /**
         * Encodes the specified NexusSlotInfo message. Does not implicitly {@link coresdk.NexusSlotInfo.verify|verify} messages.
         * @param message NexusSlotInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: coresdk.INexusSlotInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified NexusSlotInfo message, length delimited. Does not implicitly {@link coresdk.NexusSlotInfo.verify|verify} messages.
         * @param message NexusSlotInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: coresdk.INexusSlotInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a NexusSlotInfo message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NexusSlotInfo
         * @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): coresdk.NexusSlotInfo;

        /**
         * Decodes a NexusSlotInfo message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NexusSlotInfo
         * @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)): coresdk.NexusSlotInfo;

        /**
         * Creates a NexusSlotInfo message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NexusSlotInfo
         */
        public static fromObject(object: { [k: string]: any }): coresdk.NexusSlotInfo;

        /**
         * Creates a plain object from a NexusSlotInfo message. Also converts values to other types if specified.
         * @param message NexusSlotInfo
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: coresdk.NexusSlotInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this NexusSlotInfo to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NexusSlotInfo
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a NamespaceInfo. */
    interface INamespaceInfo {

        /** Namespace configured limits */
        limits?: (coresdk.NamespaceInfo.ILimits|null);
    }

    /** Info about a namespace */
    class NamespaceInfo implements INamespaceInfo {

        /**
         * Constructs a new NamespaceInfo.
         * @param [properties] Properties to set
         */
        constructor(properties?: coresdk.INamespaceInfo);

        /** Namespace configured limits */
        public limits?: (coresdk.NamespaceInfo.ILimits|null);

        /**
         * Creates a new NamespaceInfo instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NamespaceInfo instance
         */
        public static create(properties?: coresdk.INamespaceInfo): coresdk.NamespaceInfo;

        /**
         * Encodes the specified NamespaceInfo message. Does not implicitly {@link coresdk.NamespaceInfo.verify|verify} messages.
         * @param message NamespaceInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: coresdk.INamespaceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified NamespaceInfo message, length delimited. Does not implicitly {@link coresdk.NamespaceInfo.verify|verify} messages.
         * @param message NamespaceInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: coresdk.INamespaceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a NamespaceInfo message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NamespaceInfo
         * @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): coresdk.NamespaceInfo;

        /**
         * Decodes a NamespaceInfo message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NamespaceInfo
         * @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)): coresdk.NamespaceInfo;

        /**
         * Creates a NamespaceInfo message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NamespaceInfo
         */
        public static fromObject(object: { [k: string]: any }): coresdk.NamespaceInfo;

        /**
         * Creates a plain object from a NamespaceInfo message. Also converts values to other types if specified.
         * @param message NamespaceInfo
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: coresdk.NamespaceInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this NamespaceInfo to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NamespaceInfo
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace NamespaceInfo {

        /** Properties of a Limits. */
        interface ILimits {

            /**
             * Maximum size in bytes for payload fields in workflow history events
             * (e.g., workflow/activity inputs and results, failure details, signal payloads).
             * When exceeded, the server will reject the operation with an error.
             */
            blobSizeLimitError?: (Long|null);

            /** Maximum total memo size in bytes per workflow execution. */
            memoSizeLimitError?: (Long|null);
        }

        /** Represents a Limits. */
        class Limits implements ILimits {

            /**
             * Constructs a new Limits.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.NamespaceInfo.ILimits);

            /**
             * Maximum size in bytes for payload fields in workflow history events
             * (e.g., workflow/activity inputs and results, failure details, signal payloads).
             * When exceeded, the server will reject the operation with an error.
             */
            public blobSizeLimitError: Long;

            /** Maximum total memo size in bytes per workflow execution. */
            public memoSizeLimitError: Long;

            /**
             * Creates a new Limits instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Limits instance
             */
            public static create(properties?: coresdk.NamespaceInfo.ILimits): coresdk.NamespaceInfo.Limits;

            /**
             * Encodes the specified Limits message. Does not implicitly {@link coresdk.NamespaceInfo.Limits.verify|verify} messages.
             * @param message Limits message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.NamespaceInfo.ILimits, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Limits message, length delimited. Does not implicitly {@link coresdk.NamespaceInfo.Limits.verify|verify} messages.
             * @param message Limits message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.NamespaceInfo.ILimits, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Limits message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Limits
             * @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): coresdk.NamespaceInfo.Limits;

            /**
             * Decodes a Limits message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Limits
             * @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)): coresdk.NamespaceInfo.Limits;

            /**
             * Creates a Limits message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Limits
             */
            public static fromObject(object: { [k: string]: any }): coresdk.NamespaceInfo.Limits;

            /**
             * Creates a plain object from a Limits message. Also converts values to other types if specified.
             * @param message Limits
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.NamespaceInfo.Limits, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Limits to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Limits
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Namespace activity_result. */
    namespace activity_result {

        /** Properties of an ActivityExecutionResult. */
        interface IActivityExecutionResult {

            /** ActivityExecutionResult completed */
            completed?: (coresdk.activity_result.ISuccess|null);

            /** ActivityExecutionResult failed */
            failed?: (coresdk.activity_result.IFailure|null);

            /** ActivityExecutionResult cancelled */
            cancelled?: (coresdk.activity_result.ICancellation|null);

            /** ActivityExecutionResult willCompleteAsync */
            willCompleteAsync?: (coresdk.activity_result.IWillCompleteAsync|null);
        }

        /** Used to report activity completions to core */
        class ActivityExecutionResult implements IActivityExecutionResult {

            /**
             * Constructs a new ActivityExecutionResult.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.activity_result.IActivityExecutionResult);

            /** ActivityExecutionResult completed. */
            public completed?: (coresdk.activity_result.ISuccess|null);

            /** ActivityExecutionResult failed. */
            public failed?: (coresdk.activity_result.IFailure|null);

            /** ActivityExecutionResult cancelled. */
            public cancelled?: (coresdk.activity_result.ICancellation|null);

            /** ActivityExecutionResult willCompleteAsync. */
            public willCompleteAsync?: (coresdk.activity_result.IWillCompleteAsync|null);

            /** ActivityExecutionResult status. */
            public status?: ("completed"|"failed"|"cancelled"|"willCompleteAsync");

            /**
             * Creates a new ActivityExecutionResult instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ActivityExecutionResult instance
             */
            public static create(properties?: coresdk.activity_result.IActivityExecutionResult): coresdk.activity_result.ActivityExecutionResult;

            /**
             * Encodes the specified ActivityExecutionResult message. Does not implicitly {@link coresdk.activity_result.ActivityExecutionResult.verify|verify} messages.
             * @param message ActivityExecutionResult message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.activity_result.IActivityExecutionResult, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ActivityExecutionResult message, length delimited. Does not implicitly {@link coresdk.activity_result.ActivityExecutionResult.verify|verify} messages.
             * @param message ActivityExecutionResult message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.activity_result.IActivityExecutionResult, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an ActivityExecutionResult message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ActivityExecutionResult
             * @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): coresdk.activity_result.ActivityExecutionResult;

            /**
             * Decodes an ActivityExecutionResult message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ActivityExecutionResult
             * @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)): coresdk.activity_result.ActivityExecutionResult;

            /**
             * Creates an ActivityExecutionResult message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ActivityExecutionResult
             */
            public static fromObject(object: { [k: string]: any }): coresdk.activity_result.ActivityExecutionResult;

            /**
             * Creates a plain object from an ActivityExecutionResult message. Also converts values to other types if specified.
             * @param message ActivityExecutionResult
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.activity_result.ActivityExecutionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ActivityExecutionResult to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ActivityExecutionResult
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an ActivityResolution. */
        interface IActivityResolution {

            /** ActivityResolution completed */
            completed?: (coresdk.activity_result.ISuccess|null);

            /** ActivityResolution failed */
            failed?: (coresdk.activity_result.IFailure|null);

            /** ActivityResolution cancelled */
            cancelled?: (coresdk.activity_result.ICancellation|null);

            /** ActivityResolution backoff */
            backoff?: (coresdk.activity_result.IDoBackoff|null);
        }

        /**
         * Used to report activity resolutions to lang. IE: This is what the activities are resolved with
         * in the workflow.
         */
        class ActivityResolution implements IActivityResolution {

            /**
             * Constructs a new ActivityResolution.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.activity_result.IActivityResolution);

            /** ActivityResolution completed. */
            public completed?: (coresdk.activity_result.ISuccess|null);

            /** ActivityResolution failed. */
            public failed?: (coresdk.activity_result.IFailure|null);

            /** ActivityResolution cancelled. */
            public cancelled?: (coresdk.activity_result.ICancellation|null);

            /** ActivityResolution backoff. */
            public backoff?: (coresdk.activity_result.IDoBackoff|null);

            /** ActivityResolution status. */
            public status?: ("completed"|"failed"|"cancelled"|"backoff");

            /**
             * Creates a new ActivityResolution instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ActivityResolution instance
             */
            public static create(properties?: coresdk.activity_result.IActivityResolution): coresdk.activity_result.ActivityResolution;

            /**
             * Encodes the specified ActivityResolution message. Does not implicitly {@link coresdk.activity_result.ActivityResolution.verify|verify} messages.
             * @param message ActivityResolution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.activity_result.IActivityResolution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ActivityResolution message, length delimited. Does not implicitly {@link coresdk.activity_result.ActivityResolution.verify|verify} messages.
             * @param message ActivityResolution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.activity_result.IActivityResolution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an ActivityResolution message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ActivityResolution
             * @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): coresdk.activity_result.ActivityResolution;

            /**
             * Decodes an ActivityResolution message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ActivityResolution
             * @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)): coresdk.activity_result.ActivityResolution;

            /**
             * Creates an ActivityResolution message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ActivityResolution
             */
            public static fromObject(object: { [k: string]: any }): coresdk.activity_result.ActivityResolution;

            /**
             * Creates a plain object from an ActivityResolution message. Also converts values to other types if specified.
             * @param message ActivityResolution
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.activity_result.ActivityResolution, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ActivityResolution to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ActivityResolution
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Success. */
        interface ISuccess {

            /** Success result */
            result?: (temporal.api.common.v1.IPayload|null);
        }

        /** Used to report successful completion either when executing or resolving */
        class Success implements ISuccess {

            /**
             * Constructs a new Success.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.activity_result.ISuccess);

            /** Success result. */
            public result?: (temporal.api.common.v1.IPayload|null);

            /**
             * Creates a new Success instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Success instance
             */
            public static create(properties?: coresdk.activity_result.ISuccess): coresdk.activity_result.Success;

            /**
             * Encodes the specified Success message. Does not implicitly {@link coresdk.activity_result.Success.verify|verify} messages.
             * @param message Success message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.activity_result.ISuccess, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Success message, length delimited. Does not implicitly {@link coresdk.activity_result.Success.verify|verify} messages.
             * @param message Success message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.activity_result.ISuccess, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Success message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Success
             * @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): coresdk.activity_result.Success;

            /**
             * Decodes a Success message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Success
             * @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)): coresdk.activity_result.Success;

            /**
             * Creates a Success message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Success
             */
            public static fromObject(object: { [k: string]: any }): coresdk.activity_result.Success;

            /**
             * Creates a plain object from a Success message. Also converts values to other types if specified.
             * @param message Success
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.activity_result.Success, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Success to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Success
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Failure. */
        interface IFailure {

            /** Failure failure */
            failure?: (temporal.api.failure.v1.IFailure|null);
        }

        /** Used to report activity failure either when executing or resolving */
        class Failure implements IFailure {

            /**
             * Constructs a new Failure.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.activity_result.IFailure);

            /** Failure failure. */
            public failure?: (temporal.api.failure.v1.IFailure|null);

            /**
             * Creates a new Failure instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Failure instance
             */
            public static create(properties?: coresdk.activity_result.IFailure): coresdk.activity_result.Failure;

            /**
             * Encodes the specified Failure message. Does not implicitly {@link coresdk.activity_result.Failure.verify|verify} messages.
             * @param message Failure message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.activity_result.IFailure, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Failure message, length delimited. Does not implicitly {@link coresdk.activity_result.Failure.verify|verify} messages.
             * @param message Failure message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.activity_result.IFailure, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Failure message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Failure
             * @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): coresdk.activity_result.Failure;

            /**
             * Decodes a Failure message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Failure
             * @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)): coresdk.activity_result.Failure;

            /**
             * Creates a Failure message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Failure
             */
            public static fromObject(object: { [k: string]: any }): coresdk.activity_result.Failure;

            /**
             * Creates a plain object from a Failure message. Also converts values to other types if specified.
             * @param message Failure
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.activity_result.Failure, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Failure to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Failure
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Cancellation. */
        interface ICancellation {

            /** Cancellation failure */
            failure?: (temporal.api.failure.v1.IFailure|null);
        }

        /**
         * Used to report cancellation from both Core and Lang.
         * When Lang reports a cancelled activity, it must put a CancelledFailure in the failure field.
         * When Core reports a cancelled activity, it must put an ActivityFailure with CancelledFailure
         * as the cause in the failure field.
         */
        class Cancellation implements ICancellation {

            /**
             * Constructs a new Cancellation.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.activity_result.ICancellation);

            /** Cancellation failure. */
            public failure?: (temporal.api.failure.v1.IFailure|null);

            /**
             * Creates a new Cancellation instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Cancellation instance
             */
            public static create(properties?: coresdk.activity_result.ICancellation): coresdk.activity_result.Cancellation;

            /**
             * Encodes the specified Cancellation message. Does not implicitly {@link coresdk.activity_result.Cancellation.verify|verify} messages.
             * @param message Cancellation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.activity_result.ICancellation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Cancellation message, length delimited. Does not implicitly {@link coresdk.activity_result.Cancellation.verify|verify} messages.
             * @param message Cancellation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.activity_result.ICancellation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Cancellation message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Cancellation
             * @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): coresdk.activity_result.Cancellation;

            /**
             * Decodes a Cancellation message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Cancellation
             * @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)): coresdk.activity_result.Cancellation;

            /**
             * Creates a Cancellation message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Cancellation
             */
            public static fromObject(object: { [k: string]: any }): coresdk.activity_result.Cancellation;

            /**
             * Creates a plain object from a Cancellation message. Also converts values to other types if specified.
             * @param message Cancellation
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.activity_result.Cancellation, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Cancellation to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Cancellation
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a WillCompleteAsync. */
        interface IWillCompleteAsync {
        }

        /**
         * Used in ActivityExecutionResult to notify Core that this Activity will complete asynchronously.
         * Core will forget about this Activity and free up resources used to track this Activity.
         */
        class WillCompleteAsync implements IWillCompleteAsync {

            /**
             * Constructs a new WillCompleteAsync.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.activity_result.IWillCompleteAsync);

            /**
             * Creates a new WillCompleteAsync instance using the specified properties.
             * @param [properties] Properties to set
             * @returns WillCompleteAsync instance
             */
            public static create(properties?: coresdk.activity_result.IWillCompleteAsync): coresdk.activity_result.WillCompleteAsync;

            /**
             * Encodes the specified WillCompleteAsync message. Does not implicitly {@link coresdk.activity_result.WillCompleteAsync.verify|verify} messages.
             * @param message WillCompleteAsync message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.activity_result.IWillCompleteAsync, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified WillCompleteAsync message, length delimited. Does not implicitly {@link coresdk.activity_result.WillCompleteAsync.verify|verify} messages.
             * @param message WillCompleteAsync message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.activity_result.IWillCompleteAsync, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a WillCompleteAsync message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns WillCompleteAsync
             * @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): coresdk.activity_result.WillCompleteAsync;

            /**
             * Decodes a WillCompleteAsync message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns WillCompleteAsync
             * @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)): coresdk.activity_result.WillCompleteAsync;

            /**
             * Creates a WillCompleteAsync message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns WillCompleteAsync
             */
            public static fromObject(object: { [k: string]: any }): coresdk.activity_result.WillCompleteAsync;

            /**
             * Creates a plain object from a WillCompleteAsync message. Also converts values to other types if specified.
             * @param message WillCompleteAsync
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.activity_result.WillCompleteAsync, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this WillCompleteAsync to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for WillCompleteAsync
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a DoBackoff. */
        interface IDoBackoff {

            /**
             * The attempt number that lang should provide when scheduling the retry. If the LA failed
             * on attempt 4 and we told lang to back off with a timer, this number will be 5.
             */
            attempt?: (number|null);

            /** DoBackoff backoffDuration */
            backoffDuration?: (google.protobuf.IDuration|null);

            /**
             * The time the first attempt of this local activity was scheduled. Must be passed with attempt
             * to the retry LA.
             */
            originalScheduleTime?: (google.protobuf.ITimestamp|null);
        }

        /**
         * Issued when a local activity needs to retry but also wants to back off more than would be
         * reasonable to WFT heartbeat for. Lang is expected to schedule a timer for the duration
         * and then start a local activity of the same type & same inputs with the provided attempt number
         * after the timer has elapsed.
         *
         * This exists because Core does not have a concept of starting commands by itself, they originate
         * from lang. So expecting lang to start the timer / next pass of the activity fits more smoothly.
         */
        class DoBackoff implements IDoBackoff {

            /**
             * Constructs a new DoBackoff.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.activity_result.IDoBackoff);

            /**
             * The attempt number that lang should provide when scheduling the retry. If the LA failed
             * on attempt 4 and we told lang to back off with a timer, this number will be 5.
             */
            public attempt: number;

            /** DoBackoff backoffDuration. */
            public backoffDuration?: (google.protobuf.IDuration|null);

            /**
             * The time the first attempt of this local activity was scheduled. Must be passed with attempt
             * to the retry LA.
             */
            public originalScheduleTime?: (google.protobuf.ITimestamp|null);

            /**
             * Creates a new DoBackoff instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DoBackoff instance
             */
            public static create(properties?: coresdk.activity_result.IDoBackoff): coresdk.activity_result.DoBackoff;

            /**
             * Encodes the specified DoBackoff message. Does not implicitly {@link coresdk.activity_result.DoBackoff.verify|verify} messages.
             * @param message DoBackoff message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.activity_result.IDoBackoff, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DoBackoff message, length delimited. Does not implicitly {@link coresdk.activity_result.DoBackoff.verify|verify} messages.
             * @param message DoBackoff message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.activity_result.IDoBackoff, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DoBackoff message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DoBackoff
             * @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): coresdk.activity_result.DoBackoff;

            /**
             * Decodes a DoBackoff message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DoBackoff
             * @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)): coresdk.activity_result.DoBackoff;

            /**
             * Creates a DoBackoff message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DoBackoff
             */
            public static fromObject(object: { [k: string]: any }): coresdk.activity_result.DoBackoff;

            /**
             * Creates a plain object from a DoBackoff message. Also converts values to other types if specified.
             * @param message DoBackoff
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.activity_result.DoBackoff, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DoBackoff to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DoBackoff
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Namespace activity_task. */
    namespace activity_task {

        /** Properties of an ActivityTask. */
        interface IActivityTask {

            /** A unique identifier for this task */
            taskToken?: (Uint8Array|null);

            /** Start activity execution. */
            start?: (coresdk.activity_task.IStart|null);

            /** Attempt to cancel activity execution. */
            cancel?: (coresdk.activity_task.ICancel|null);
        }

        /** Represents an ActivityTask. */
        class ActivityTask implements IActivityTask {

            /**
             * Constructs a new ActivityTask.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.activity_task.IActivityTask);

            /** A unique identifier for this task */
            public taskToken: Uint8Array;

            /** Start activity execution. */
            public start?: (coresdk.activity_task.IStart|null);

            /** Attempt to cancel activity execution. */
            public cancel?: (coresdk.activity_task.ICancel|null);

            /** ActivityTask variant. */
            public variant?: ("start"|"cancel");

            /**
             * Creates a new ActivityTask instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ActivityTask instance
             */
            public static create(properties?: coresdk.activity_task.IActivityTask): coresdk.activity_task.ActivityTask;

            /**
             * Encodes the specified ActivityTask message. Does not implicitly {@link coresdk.activity_task.ActivityTask.verify|verify} messages.
             * @param message ActivityTask message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.activity_task.IActivityTask, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ActivityTask message, length delimited. Does not implicitly {@link coresdk.activity_task.ActivityTask.verify|verify} messages.
             * @param message ActivityTask message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.activity_task.IActivityTask, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an ActivityTask message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ActivityTask
             * @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): coresdk.activity_task.ActivityTask;

            /**
             * Decodes an ActivityTask message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ActivityTask
             * @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)): coresdk.activity_task.ActivityTask;

            /**
             * Creates an ActivityTask message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ActivityTask
             */
            public static fromObject(object: { [k: string]: any }): coresdk.activity_task.ActivityTask;

            /**
             * Creates a plain object from an ActivityTask message. Also converts values to other types if specified.
             * @param message ActivityTask
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.activity_task.ActivityTask, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ActivityTask to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ActivityTask
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Start. */
        interface IStart {

            /** The namespace the workflow lives in */
            workflowNamespace?: (string|null);

            /** The workflow's type name or function identifier */
            workflowType?: (string|null);

            /** The workflow execution which requested this activity */
            workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

            /** The activity's ID */
            activityId?: (string|null);

            /** The activity's type name or function identifier */
            activityType?: (string|null);

            /** Start headerFields */
            headerFields?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

            /** Arguments to the activity */
            input?: (temporal.api.common.v1.IPayload[]|null);

            /** The last details that were recorded by a heartbeat when this task was generated */
            heartbeatDetails?: (temporal.api.common.v1.IPayload[]|null);

            /** When the task was *first* scheduled */
            scheduledTime?: (google.protobuf.ITimestamp|null);

            /** When this current attempt at the task was scheduled */
            currentAttemptScheduledTime?: (google.protobuf.ITimestamp|null);

            /** When this attempt was started, which is to say when core received it by polling. */
            startedTime?: (google.protobuf.ITimestamp|null);

            /** Start attempt */
            attempt?: (number|null);

            /** Timeout from the first schedule time to completion */
            scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

            /** Timeout from starting an attempt to reporting its result */
            startToCloseTimeout?: (google.protobuf.IDuration|null);

            /** If set a heartbeat must be reported within this interval */
            heartbeatTimeout?: (google.protobuf.IDuration|null);

            /**
             * This is an actual retry policy the service uses. It can be different from the one provided
             * (or not) during activity scheduling as the service can override the provided one in case its
             * values are not specified or exceed configured system limits.
             */
            retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /** Priority of this activity. Local activities will always have this field set to the default. */
            priority?: (temporal.api.common.v1.IPriority|null);

            /**
             * Set to true if this is a local activity. Note that heartbeating does not apply to local
             * activities.
             */
            isLocal?: (boolean|null);
        }

        /** Begin executing an activity */
        class Start implements IStart {

            /**
             * Constructs a new Start.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.activity_task.IStart);

            /** The namespace the workflow lives in */
            public workflowNamespace: string;

            /** The workflow's type name or function identifier */
            public workflowType: string;

            /** The workflow execution which requested this activity */
            public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

            /** The activity's ID */
            public activityId: string;

            /** The activity's type name or function identifier */
            public activityType: string;

            /** Start headerFields. */
            public headerFields: { [k: string]: temporal.api.common.v1.IPayload };

            /** Arguments to the activity */
            public input: temporal.api.common.v1.IPayload[];

            /** The last details that were recorded by a heartbeat when this task was generated */
            public heartbeatDetails: temporal.api.common.v1.IPayload[];

            /** When the task was *first* scheduled */
            public scheduledTime?: (google.protobuf.ITimestamp|null);

            /** When this current attempt at the task was scheduled */
            public currentAttemptScheduledTime?: (google.protobuf.ITimestamp|null);

            /** When this attempt was started, which is to say when core received it by polling. */
            public startedTime?: (google.protobuf.ITimestamp|null);

            /** Start attempt. */
            public attempt: number;

            /** Timeout from the first schedule time to completion */
            public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

            /** Timeout from starting an attempt to reporting its result */
            public startToCloseTimeout?: (google.protobuf.IDuration|null);

            /** If set a heartbeat must be reported within this interval */
            public heartbeatTimeout?: (google.protobuf.IDuration|null);

            /**
             * This is an actual retry policy the service uses. It can be different from the one provided
             * (or not) during activity scheduling as the service can override the provided one in case its
             * values are not specified or exceed configured system limits.
             */
            public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /** Priority of this activity. Local activities will always have this field set to the default. */
            public priority?: (temporal.api.common.v1.IPriority|null);

            /**
             * Set to true if this is a local activity. Note that heartbeating does not apply to local
             * activities.
             */
            public isLocal: boolean;

            /**
             * Creates a new Start instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Start instance
             */
            public static create(properties?: coresdk.activity_task.IStart): coresdk.activity_task.Start;

            /**
             * Encodes the specified Start message. Does not implicitly {@link coresdk.activity_task.Start.verify|verify} messages.
             * @param message Start message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.activity_task.IStart, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Start message, length delimited. Does not implicitly {@link coresdk.activity_task.Start.verify|verify} messages.
             * @param message Start message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.activity_task.IStart, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Start message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Start
             * @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): coresdk.activity_task.Start;

            /**
             * Decodes a Start message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Start
             * @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)): coresdk.activity_task.Start;

            /**
             * Creates a Start message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Start
             */
            public static fromObject(object: { [k: string]: any }): coresdk.activity_task.Start;

            /**
             * Creates a plain object from a Start message. Also converts values to other types if specified.
             * @param message Start
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.activity_task.Start, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Start to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Start
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Cancel. */
        interface ICancel {

            /** Primary cancellation reason */
            reason?: (coresdk.activity_task.ActivityCancelReason|null);

            /** Activity cancellation details, surfaces all cancellation reasons. */
            details?: (coresdk.activity_task.IActivityCancellationDetails|null);
        }

        /** Attempt to cancel a running activity */
        class Cancel implements ICancel {

            /**
             * Constructs a new Cancel.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.activity_task.ICancel);

            /** Primary cancellation reason */
            public reason: coresdk.activity_task.ActivityCancelReason;

            /** Activity cancellation details, surfaces all cancellation reasons. */
            public details?: (coresdk.activity_task.IActivityCancellationDetails|null);

            /**
             * Creates a new Cancel instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Cancel instance
             */
            public static create(properties?: coresdk.activity_task.ICancel): coresdk.activity_task.Cancel;

            /**
             * Encodes the specified Cancel message. Does not implicitly {@link coresdk.activity_task.Cancel.verify|verify} messages.
             * @param message Cancel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.activity_task.ICancel, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Cancel message, length delimited. Does not implicitly {@link coresdk.activity_task.Cancel.verify|verify} messages.
             * @param message Cancel message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.activity_task.ICancel, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Cancel message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Cancel
             * @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): coresdk.activity_task.Cancel;

            /**
             * Decodes a Cancel message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Cancel
             * @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)): coresdk.activity_task.Cancel;

            /**
             * Creates a Cancel message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Cancel
             */
            public static fromObject(object: { [k: string]: any }): coresdk.activity_task.Cancel;

            /**
             * Creates a plain object from a Cancel message. Also converts values to other types if specified.
             * @param message Cancel
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.activity_task.Cancel, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Cancel to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Cancel
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an ActivityCancellationDetails. */
        interface IActivityCancellationDetails {

            /** ActivityCancellationDetails isNotFound */
            isNotFound?: (boolean|null);

            /** ActivityCancellationDetails isCancelled */
            isCancelled?: (boolean|null);

            /** ActivityCancellationDetails isPaused */
            isPaused?: (boolean|null);

            /** ActivityCancellationDetails isTimedOut */
            isTimedOut?: (boolean|null);

            /** ActivityCancellationDetails isWorkerShutdown */
            isWorkerShutdown?: (boolean|null);

            /** ActivityCancellationDetails isReset */
            isReset?: (boolean|null);
        }

        /** Represents an ActivityCancellationDetails. */
        class ActivityCancellationDetails implements IActivityCancellationDetails {

            /**
             * Constructs a new ActivityCancellationDetails.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.activity_task.IActivityCancellationDetails);

            /** ActivityCancellationDetails isNotFound. */
            public isNotFound: boolean;

            /** ActivityCancellationDetails isCancelled. */
            public isCancelled: boolean;

            /** ActivityCancellationDetails isPaused. */
            public isPaused: boolean;

            /** ActivityCancellationDetails isTimedOut. */
            public isTimedOut: boolean;

            /** ActivityCancellationDetails isWorkerShutdown. */
            public isWorkerShutdown: boolean;

            /** ActivityCancellationDetails isReset. */
            public isReset: boolean;

            /**
             * Creates a new ActivityCancellationDetails instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ActivityCancellationDetails instance
             */
            public static create(properties?: coresdk.activity_task.IActivityCancellationDetails): coresdk.activity_task.ActivityCancellationDetails;

            /**
             * Encodes the specified ActivityCancellationDetails message. Does not implicitly {@link coresdk.activity_task.ActivityCancellationDetails.verify|verify} messages.
             * @param message ActivityCancellationDetails message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.activity_task.IActivityCancellationDetails, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ActivityCancellationDetails message, length delimited. Does not implicitly {@link coresdk.activity_task.ActivityCancellationDetails.verify|verify} messages.
             * @param message ActivityCancellationDetails message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.activity_task.IActivityCancellationDetails, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an ActivityCancellationDetails message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ActivityCancellationDetails
             * @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): coresdk.activity_task.ActivityCancellationDetails;

            /**
             * Decodes an ActivityCancellationDetails message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ActivityCancellationDetails
             * @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)): coresdk.activity_task.ActivityCancellationDetails;

            /**
             * Creates an ActivityCancellationDetails message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ActivityCancellationDetails
             */
            public static fromObject(object: { [k: string]: any }): coresdk.activity_task.ActivityCancellationDetails;

            /**
             * Creates a plain object from an ActivityCancellationDetails message. Also converts values to other types if specified.
             * @param message ActivityCancellationDetails
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.activity_task.ActivityCancellationDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ActivityCancellationDetails to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ActivityCancellationDetails
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** ActivityCancelReason enum. */
        enum ActivityCancelReason {
            NOT_FOUND = 0,
            CANCELLED = 1,
            TIMED_OUT = 2,
            WORKER_SHUTDOWN = 3,
            PAUSED = 4,
            RESET = 5
        }
    }

    /** Namespace common. */
    namespace common {

        /** Properties of a NamespacedWorkflowExecution. */
        interface INamespacedWorkflowExecution {

            /** Namespace the workflow run is located in */
            namespace?: (string|null);

            /** Can never be empty */
            workflowId?: (string|null);

            /** May be empty if the most recent run of the workflow with the given ID is being targeted */
            runId?: (string|null);
        }

        /** Identifying information about a particular workflow execution, including namespace */
        class NamespacedWorkflowExecution implements INamespacedWorkflowExecution {

            /**
             * Constructs a new NamespacedWorkflowExecution.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.common.INamespacedWorkflowExecution);

            /** Namespace the workflow run is located in */
            public namespace: string;

            /** Can never be empty */
            public workflowId: string;

            /** May be empty if the most recent run of the workflow with the given ID is being targeted */
            public runId: string;

            /**
             * Creates a new NamespacedWorkflowExecution instance using the specified properties.
             * @param [properties] Properties to set
             * @returns NamespacedWorkflowExecution instance
             */
            public static create(properties?: coresdk.common.INamespacedWorkflowExecution): coresdk.common.NamespacedWorkflowExecution;

            /**
             * Encodes the specified NamespacedWorkflowExecution message. Does not implicitly {@link coresdk.common.NamespacedWorkflowExecution.verify|verify} messages.
             * @param message NamespacedWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.common.INamespacedWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified NamespacedWorkflowExecution message, length delimited. Does not implicitly {@link coresdk.common.NamespacedWorkflowExecution.verify|verify} messages.
             * @param message NamespacedWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.common.INamespacedWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a NamespacedWorkflowExecution message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns NamespacedWorkflowExecution
             * @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): coresdk.common.NamespacedWorkflowExecution;

            /**
             * Decodes a NamespacedWorkflowExecution message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns NamespacedWorkflowExecution
             * @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)): coresdk.common.NamespacedWorkflowExecution;

            /**
             * Creates a NamespacedWorkflowExecution message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns NamespacedWorkflowExecution
             */
            public static fromObject(object: { [k: string]: any }): coresdk.common.NamespacedWorkflowExecution;

            /**
             * Creates a plain object from a NamespacedWorkflowExecution message. Also converts values to other types if specified.
             * @param message NamespacedWorkflowExecution
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.common.NamespacedWorkflowExecution, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this NamespacedWorkflowExecution to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for NamespacedWorkflowExecution
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /**
         * An indication of user's intent concerning what Build ID versioning approach should be used for
         * a specific command
         */
        enum VersioningIntent {
            UNSPECIFIED = 0,
            COMPATIBLE = 1,
            DEFAULT = 2
        }

        /** Properties of a WorkerDeploymentVersion. */
        interface IWorkerDeploymentVersion {

            /** WorkerDeploymentVersion deploymentName */
            deploymentName?: (string|null);

            /** WorkerDeploymentVersion buildId */
            buildId?: (string|null);
        }

        /** Represents a WorkerDeploymentVersion. */
        class WorkerDeploymentVersion implements IWorkerDeploymentVersion {

            /**
             * Constructs a new WorkerDeploymentVersion.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.common.IWorkerDeploymentVersion);

            /** WorkerDeploymentVersion deploymentName. */
            public deploymentName: string;

            /** WorkerDeploymentVersion buildId. */
            public buildId: string;

            /**
             * Creates a new WorkerDeploymentVersion instance using the specified properties.
             * @param [properties] Properties to set
             * @returns WorkerDeploymentVersion instance
             */
            public static create(properties?: coresdk.common.IWorkerDeploymentVersion): coresdk.common.WorkerDeploymentVersion;

            /**
             * Encodes the specified WorkerDeploymentVersion message. Does not implicitly {@link coresdk.common.WorkerDeploymentVersion.verify|verify} messages.
             * @param message WorkerDeploymentVersion message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.common.IWorkerDeploymentVersion, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified WorkerDeploymentVersion message, length delimited. Does not implicitly {@link coresdk.common.WorkerDeploymentVersion.verify|verify} messages.
             * @param message WorkerDeploymentVersion message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.common.IWorkerDeploymentVersion, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a WorkerDeploymentVersion message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns WorkerDeploymentVersion
             * @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): coresdk.common.WorkerDeploymentVersion;

            /**
             * Decodes a WorkerDeploymentVersion message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns WorkerDeploymentVersion
             * @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)): coresdk.common.WorkerDeploymentVersion;

            /**
             * Creates a WorkerDeploymentVersion message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns WorkerDeploymentVersion
             */
            public static fromObject(object: { [k: string]: any }): coresdk.common.WorkerDeploymentVersion;

            /**
             * Creates a plain object from a WorkerDeploymentVersion message. Also converts values to other types if specified.
             * @param message WorkerDeploymentVersion
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.common.WorkerDeploymentVersion, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this WorkerDeploymentVersion to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for WorkerDeploymentVersion
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Namespace external_data. */
    namespace external_data {

        /** Properties of a LocalActivityMarkerData. */
        interface ILocalActivityMarkerData {

            /** LocalActivityMarkerData seq */
            seq?: (number|null);

            /**
             * The number of attempts at execution before we recorded this result. Typically starts at 1,
             * but it is possible to start at a higher number when backing off using a timer.
             */
            attempt?: (number|null);

            /** LocalActivityMarkerData activityId */
            activityId?: (string|null);

            /** LocalActivityMarkerData activityType */
            activityType?: (string|null);

            /**
             * You can think of this as "perceived completion time". It is the time the local activity thought
             * it was when it completed. Which could be different from wall-clock time because of workflow
             * replay. It's the WFT start time + the LA's runtime
             */
            completeTime?: (google.protobuf.ITimestamp|null);

            /**
             * If set, this local activity conceptually is retrying after the specified backoff.
             * Implementation wise, they are really two different LA machines, but with the same type & input.
             * The retry starts with an attempt number > 1.
             */
            backoff?: (google.protobuf.IDuration|null);

            /**
             * The time the LA was originally scheduled (wall clock time). This is used to track
             * schedule-to-close timeouts when timer-based backoffs are used
             */
            originalScheduleTime?: (google.protobuf.ITimestamp|null);
        }

        /** Represents a LocalActivityMarkerData. */
        class LocalActivityMarkerData implements ILocalActivityMarkerData {

            /**
             * Constructs a new LocalActivityMarkerData.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.external_data.ILocalActivityMarkerData);

            /** LocalActivityMarkerData seq. */
            public seq: number;

            /**
             * The number of attempts at execution before we recorded this result. Typically starts at 1,
             * but it is possible to start at a higher number when backing off using a timer.
             */
            public attempt: number;

            /** LocalActivityMarkerData activityId. */
            public activityId: string;

            /** LocalActivityMarkerData activityType. */
            public activityType: string;

            /**
             * You can think of this as "perceived completion time". It is the time the local activity thought
             * it was when it completed. Which could be different from wall-clock time because of workflow
             * replay. It's the WFT start time + the LA's runtime
             */
            public completeTime?: (google.protobuf.ITimestamp|null);

            /**
             * If set, this local activity conceptually is retrying after the specified backoff.
             * Implementation wise, they are really two different LA machines, but with the same type & input.
             * The retry starts with an attempt number > 1.
             */
            public backoff?: (google.protobuf.IDuration|null);

            /**
             * The time the LA was originally scheduled (wall clock time). This is used to track
             * schedule-to-close timeouts when timer-based backoffs are used
             */
            public originalScheduleTime?: (google.protobuf.ITimestamp|null);

            /**
             * Creates a new LocalActivityMarkerData instance using the specified properties.
             * @param [properties] Properties to set
             * @returns LocalActivityMarkerData instance
             */
            public static create(properties?: coresdk.external_data.ILocalActivityMarkerData): coresdk.external_data.LocalActivityMarkerData;

            /**
             * Encodes the specified LocalActivityMarkerData message. Does not implicitly {@link coresdk.external_data.LocalActivityMarkerData.verify|verify} messages.
             * @param message LocalActivityMarkerData message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.external_data.ILocalActivityMarkerData, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified LocalActivityMarkerData message, length delimited. Does not implicitly {@link coresdk.external_data.LocalActivityMarkerData.verify|verify} messages.
             * @param message LocalActivityMarkerData message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.external_data.ILocalActivityMarkerData, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a LocalActivityMarkerData message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns LocalActivityMarkerData
             * @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): coresdk.external_data.LocalActivityMarkerData;

            /**
             * Decodes a LocalActivityMarkerData message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns LocalActivityMarkerData
             * @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)): coresdk.external_data.LocalActivityMarkerData;

            /**
             * Creates a LocalActivityMarkerData message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns LocalActivityMarkerData
             */
            public static fromObject(object: { [k: string]: any }): coresdk.external_data.LocalActivityMarkerData;

            /**
             * Creates a plain object from a LocalActivityMarkerData message. Also converts values to other types if specified.
             * @param message LocalActivityMarkerData
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.external_data.LocalActivityMarkerData, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this LocalActivityMarkerData to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for LocalActivityMarkerData
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a PatchedMarkerData. */
        interface IPatchedMarkerData {

            /** The patch id */
            id?: (string|null);

            /** Whether or not the patch is marked deprecated. */
            deprecated?: (boolean|null);
        }

        /** Represents a PatchedMarkerData. */
        class PatchedMarkerData implements IPatchedMarkerData {

            /**
             * Constructs a new PatchedMarkerData.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.external_data.IPatchedMarkerData);

            /** The patch id */
            public id: string;

            /** Whether or not the patch is marked deprecated. */
            public deprecated: boolean;

            /**
             * Creates a new PatchedMarkerData instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PatchedMarkerData instance
             */
            public static create(properties?: coresdk.external_data.IPatchedMarkerData): coresdk.external_data.PatchedMarkerData;

            /**
             * Encodes the specified PatchedMarkerData message. Does not implicitly {@link coresdk.external_data.PatchedMarkerData.verify|verify} messages.
             * @param message PatchedMarkerData message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.external_data.IPatchedMarkerData, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified PatchedMarkerData message, length delimited. Does not implicitly {@link coresdk.external_data.PatchedMarkerData.verify|verify} messages.
             * @param message PatchedMarkerData message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.external_data.IPatchedMarkerData, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a PatchedMarkerData message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PatchedMarkerData
             * @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): coresdk.external_data.PatchedMarkerData;

            /**
             * Decodes a PatchedMarkerData message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PatchedMarkerData
             * @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)): coresdk.external_data.PatchedMarkerData;

            /**
             * Creates a PatchedMarkerData message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns PatchedMarkerData
             */
            public static fromObject(object: { [k: string]: any }): coresdk.external_data.PatchedMarkerData;

            /**
             * Creates a plain object from a PatchedMarkerData message. Also converts values to other types if specified.
             * @param message PatchedMarkerData
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.external_data.PatchedMarkerData, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this PatchedMarkerData to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for PatchedMarkerData
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Namespace workflow_activation. */
    namespace workflow_activation {

        /** Properties of a WorkflowActivation. */
        interface IWorkflowActivation {

            /**
             * The id of the currently active run of the workflow. Also used as a cache key. There may
             * only ever be one active workflow task (and hence activation) of a run at one time.
             */
            runId?: (string|null);

            /** The current time as understood by the workflow, which is set by workflow task started events */
            timestamp?: (google.protobuf.ITimestamp|null);

            /** Whether or not the activation is replaying past events */
            isReplaying?: (boolean|null);

            /**
             * Current history length as determined by the event id of the most recently processed event.
             * This ensures that the number is always deterministic
             */
            historyLength?: (number|null);

            /** The things to do upon activating the workflow */
            jobs?: (coresdk.workflow_activation.IWorkflowActivationJob[]|null);

            /**
             * Internal flags which are available for use by lang. If `is_replaying` is false, all
             * internal flags may be used. This is not a delta - all previously used flags always
             * appear since this representation is cheap.
             */
            availableInternalFlags?: (number[]|null);

            /** The history size in bytes as of the last WFT started event */
            historySizeBytes?: (Long|null);

            /** Set true if the most recent WFT started event had this suggestion */
            continueAsNewSuggested?: (boolean|null);

            /**
             * Set to the deployment version of the worker that processed this task,
             * which may be empty. During replay this version may not equal the version
             * of the replaying worker. If not replaying and this worker has a defined
             * Deployment Version, it will equal that. It will also be empty for
             * evict-only activations. The deployment name may be empty, but not the
             * build id, if this worker was using the deprecated Build ID-only
             * feature(s).
             */
            deploymentVersionForCurrentTask?: (coresdk.common.IWorkerDeploymentVersion|null);

            /** The last seen SDK version from the most recent WFT completed event */
            lastSdkVersion?: (string|null);

            /**
             * Experimental. Optionally decide the versioning behavior that the first task of the new run should use.
             * For example, choose to AutoUpgrade on continue-as-new instead of inheriting the pinned version
             * of the previous run.
             */
            suggestContinueAsNewReasons?: (temporal.api.enums.v1.SuggestContinueAsNewReason[]|null);

            /**
             * True if Workflow's Target Worker Deployment Version is different from its Pinned Version and
             * the workflow is Pinned.
             * Experimental.
             */
            targetWorkerDeploymentVersionChanged?: (boolean|null);
        }

        /**
         * An instruction to the lang sdk to run some workflow code, whether for the first time or from
         * a cached state.
         *
         * ## Job ordering guarantees and semantics
         *
         * Core will, by default, order jobs within the activation as follows:
         * 1. init workflow
         * 2. patches
         * 3. random-seed-updates
         * 4. signals/updates
         * 5. all others
         * 6. local activity resolutions
         * 7. queries
         * 8. evictions
         *
         * This is because:
         * * Patches are expected to apply to the entire activation
         * * Signal and update handlers should be invoked before workflow routines are iterated. That is to
         * say before the users' main workflow function and anything spawned by it is allowed to continue.
         * * Local activities resolutions go after other normal jobs because while *not* replaying, they
         * will always take longer than anything else that produces an immediate job (which is
         * effectively instant). When *replaying* we need to scan ahead for LA markers so that we can
         * resolve them in the same activation that they completed in when not replaying. However, doing
         * so would, by default, put those resolutions *before* any other immediate jobs that happened
         * in that same activation (prime example: cancelling not-wait-for-cancel activities). So, we do
         * this to ensure the LA resolution happens after that cancel (or whatever else it may be) as it
         * normally would have when executing.
         * * Queries always go last (and, in fact, always come in their own activation)
         * * Evictions also always come in their own activation
         *
         * Core does this reordering to ensure that langs observe jobs in the same order during replay as
         * they would have during execution. However, in principle, this ordering is not necessary
         * (excepting queries/evictions, which definitely must come last) if lang layers apply all jobs to
         * state *first* (by resolving promises/futures, marking handlers to be invoked, etc as they iterate
         * over the jobs) and then only *after* that is done, drive coroutines/threads/whatever. If
         * execution works this way, then determinism is only impacted by the order routines are driven in
         * (which must be stable based on lang implementation or convention), rather than the order jobs are
         * processed.
         *
         * ## Evictions
         *
         * Evictions appear as an activations that contains only a `remove_from_cache` job. Such activations
         * should not cause the workflow code to be invoked and may be responded to with an empty command
         * list.
         */
        class WorkflowActivation implements IWorkflowActivation {

            /**
             * Constructs a new WorkflowActivation.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IWorkflowActivation);

            /**
             * The id of the currently active run of the workflow. Also used as a cache key. There may
             * only ever be one active workflow task (and hence activation) of a run at one time.
             */
            public runId: string;

            /** The current time as understood by the workflow, which is set by workflow task started events */
            public timestamp?: (google.protobuf.ITimestamp|null);

            /** Whether or not the activation is replaying past events */
            public isReplaying: boolean;

            /**
             * Current history length as determined by the event id of the most recently processed event.
             * This ensures that the number is always deterministic
             */
            public historyLength: number;

            /** The things to do upon activating the workflow */
            public jobs: coresdk.workflow_activation.IWorkflowActivationJob[];

            /**
             * Internal flags which are available for use by lang. If `is_replaying` is false, all
             * internal flags may be used. This is not a delta - all previously used flags always
             * appear since this representation is cheap.
             */
            public availableInternalFlags: number[];

            /** The history size in bytes as of the last WFT started event */
            public historySizeBytes: Long;

            /** Set true if the most recent WFT started event had this suggestion */
            public continueAsNewSuggested: boolean;

            /**
             * Set to the deployment version of the worker that processed this task,
             * which may be empty. During replay this version may not equal the version
             * of the replaying worker. If not replaying and this worker has a defined
             * Deployment Version, it will equal that. It will also be empty for
             * evict-only activations. The deployment name may be empty, but not the
             * build id, if this worker was using the deprecated Build ID-only
             * feature(s).
             */
            public deploymentVersionForCurrentTask?: (coresdk.common.IWorkerDeploymentVersion|null);

            /** The last seen SDK version from the most recent WFT completed event */
            public lastSdkVersion: string;

            /**
             * Experimental. Optionally decide the versioning behavior that the first task of the new run should use.
             * For example, choose to AutoUpgrade on continue-as-new instead of inheriting the pinned version
             * of the previous run.
             */
            public suggestContinueAsNewReasons: temporal.api.enums.v1.SuggestContinueAsNewReason[];

            /**
             * True if Workflow's Target Worker Deployment Version is different from its Pinned Version and
             * the workflow is Pinned.
             * Experimental.
             */
            public targetWorkerDeploymentVersionChanged: boolean;

            /**
             * Creates a new WorkflowActivation instance using the specified properties.
             * @param [properties] Properties to set
             * @returns WorkflowActivation instance
             */
            public static create(properties?: coresdk.workflow_activation.IWorkflowActivation): coresdk.workflow_activation.WorkflowActivation;

            /**
             * Encodes the specified WorkflowActivation message. Does not implicitly {@link coresdk.workflow_activation.WorkflowActivation.verify|verify} messages.
             * @param message WorkflowActivation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IWorkflowActivation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified WorkflowActivation message, length delimited. Does not implicitly {@link coresdk.workflow_activation.WorkflowActivation.verify|verify} messages.
             * @param message WorkflowActivation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IWorkflowActivation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a WorkflowActivation message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns WorkflowActivation
             * @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): coresdk.workflow_activation.WorkflowActivation;

            /**
             * Decodes a WorkflowActivation message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns WorkflowActivation
             * @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)): coresdk.workflow_activation.WorkflowActivation;

            /**
             * Creates a WorkflowActivation message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns WorkflowActivation
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.WorkflowActivation;

            /**
             * Creates a plain object from a WorkflowActivation message. Also converts values to other types if specified.
             * @param message WorkflowActivation
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.WorkflowActivation, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this WorkflowActivation to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for WorkflowActivation
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a WorkflowActivationJob. */
        interface IWorkflowActivationJob {

            /** A workflow is starting, record all of the information from its start event */
            initializeWorkflow?: (coresdk.workflow_activation.IInitializeWorkflow|null);

            /** A timer has fired, allowing whatever was waiting on it (if anything) to proceed */
            fireTimer?: (coresdk.workflow_activation.IFireTimer|null);

            /** Workflow was reset. The randomness seed must be updated. */
            updateRandomSeed?: (coresdk.workflow_activation.IUpdateRandomSeed|null);

            /**
             * A request to query the workflow was received. It is guaranteed that queries (one or more)
             * always come in their own activation after other mutating jobs.
             */
            queryWorkflow?: (coresdk.workflow_activation.IQueryWorkflow|null);

            /** A request to cancel the workflow was received. */
            cancelWorkflow?: (coresdk.workflow_activation.ICancelWorkflow|null);

            /** A request to signal the workflow was received. */
            signalWorkflow?: (coresdk.workflow_activation.ISignalWorkflow|null);

            /** An activity was resolved, result could be completed, failed or cancelled */
            resolveActivity?: (coresdk.workflow_activation.IResolveActivity|null);

            /**
             * A patch marker has been detected and lang is being told that change exists. This
             * job is strange in that it is sent pre-emptively to lang without any corresponding
             * command being sent first.
             */
            notifyHasPatch?: (coresdk.workflow_activation.INotifyHasPatch|null);

            /** A child workflow execution has started or failed to start */
            resolveChildWorkflowExecutionStart?: (coresdk.workflow_activation.IResolveChildWorkflowExecutionStart|null);

            /** A child workflow was resolved, result could be completed or failed */
            resolveChildWorkflowExecution?: (coresdk.workflow_activation.IResolveChildWorkflowExecution|null);

            /** An attempt to signal an external workflow resolved */
            resolveSignalExternalWorkflow?: (coresdk.workflow_activation.IResolveSignalExternalWorkflow|null);

            /** An attempt to cancel an external workflow resolved */
            resolveRequestCancelExternalWorkflow?: (coresdk.workflow_activation.IResolveRequestCancelExternalWorkflow|null);

            /** A request to handle a workflow update. */
            doUpdate?: (coresdk.workflow_activation.IDoUpdate|null);

            /** A nexus operation started. */
            resolveNexusOperationStart?: (coresdk.workflow_activation.IResolveNexusOperationStart|null);

            /** A nexus operation resolved. */
            resolveNexusOperation?: (coresdk.workflow_activation.IResolveNexusOperation|null);

            /**
             * Remove the workflow identified by the [WorkflowActivation] containing this job from the
             * cache after performing the activation. It is guaranteed that this will be the only job
             * in the activation if present.
             */
            removeFromCache?: (coresdk.workflow_activation.IRemoveFromCache|null);
        }

        /** Represents a WorkflowActivationJob. */
        class WorkflowActivationJob implements IWorkflowActivationJob {

            /**
             * Constructs a new WorkflowActivationJob.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IWorkflowActivationJob);

            /** A workflow is starting, record all of the information from its start event */
            public initializeWorkflow?: (coresdk.workflow_activation.IInitializeWorkflow|null);

            /** A timer has fired, allowing whatever was waiting on it (if anything) to proceed */
            public fireTimer?: (coresdk.workflow_activation.IFireTimer|null);

            /** Workflow was reset. The randomness seed must be updated. */
            public updateRandomSeed?: (coresdk.workflow_activation.IUpdateRandomSeed|null);

            /**
             * A request to query the workflow was received. It is guaranteed that queries (one or more)
             * always come in their own activation after other mutating jobs.
             */
            public queryWorkflow?: (coresdk.workflow_activation.IQueryWorkflow|null);

            /** A request to cancel the workflow was received. */
            public cancelWorkflow?: (coresdk.workflow_activation.ICancelWorkflow|null);

            /** A request to signal the workflow was received. */
            public signalWorkflow?: (coresdk.workflow_activation.ISignalWorkflow|null);

            /** An activity was resolved, result could be completed, failed or cancelled */
            public resolveActivity?: (coresdk.workflow_activation.IResolveActivity|null);

            /**
             * A patch marker has been detected and lang is being told that change exists. This
             * job is strange in that it is sent pre-emptively to lang without any corresponding
             * command being sent first.
             */
            public notifyHasPatch?: (coresdk.workflow_activation.INotifyHasPatch|null);

            /** A child workflow execution has started or failed to start */
            public resolveChildWorkflowExecutionStart?: (coresdk.workflow_activation.IResolveChildWorkflowExecutionStart|null);

            /** A child workflow was resolved, result could be completed or failed */
            public resolveChildWorkflowExecution?: (coresdk.workflow_activation.IResolveChildWorkflowExecution|null);

            /** An attempt to signal an external workflow resolved */
            public resolveSignalExternalWorkflow?: (coresdk.workflow_activation.IResolveSignalExternalWorkflow|null);

            /** An attempt to cancel an external workflow resolved */
            public resolveRequestCancelExternalWorkflow?: (coresdk.workflow_activation.IResolveRequestCancelExternalWorkflow|null);

            /** A request to handle a workflow update. */
            public doUpdate?: (coresdk.workflow_activation.IDoUpdate|null);

            /** A nexus operation started. */
            public resolveNexusOperationStart?: (coresdk.workflow_activation.IResolveNexusOperationStart|null);

            /** A nexus operation resolved. */
            public resolveNexusOperation?: (coresdk.workflow_activation.IResolveNexusOperation|null);

            /**
             * Remove the workflow identified by the [WorkflowActivation] containing this job from the
             * cache after performing the activation. It is guaranteed that this will be the only job
             * in the activation if present.
             */
            public removeFromCache?: (coresdk.workflow_activation.IRemoveFromCache|null);

            /** WorkflowActivationJob variant. */
            public variant?: ("initializeWorkflow"|"fireTimer"|"updateRandomSeed"|"queryWorkflow"|"cancelWorkflow"|"signalWorkflow"|"resolveActivity"|"notifyHasPatch"|"resolveChildWorkflowExecutionStart"|"resolveChildWorkflowExecution"|"resolveSignalExternalWorkflow"|"resolveRequestCancelExternalWorkflow"|"doUpdate"|"resolveNexusOperationStart"|"resolveNexusOperation"|"removeFromCache");

            /**
             * Creates a new WorkflowActivationJob instance using the specified properties.
             * @param [properties] Properties to set
             * @returns WorkflowActivationJob instance
             */
            public static create(properties?: coresdk.workflow_activation.IWorkflowActivationJob): coresdk.workflow_activation.WorkflowActivationJob;

            /**
             * Encodes the specified WorkflowActivationJob message. Does not implicitly {@link coresdk.workflow_activation.WorkflowActivationJob.verify|verify} messages.
             * @param message WorkflowActivationJob message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IWorkflowActivationJob, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified WorkflowActivationJob message, length delimited. Does not implicitly {@link coresdk.workflow_activation.WorkflowActivationJob.verify|verify} messages.
             * @param message WorkflowActivationJob message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IWorkflowActivationJob, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a WorkflowActivationJob message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns WorkflowActivationJob
             * @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): coresdk.workflow_activation.WorkflowActivationJob;

            /**
             * Decodes a WorkflowActivationJob message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns WorkflowActivationJob
             * @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)): coresdk.workflow_activation.WorkflowActivationJob;

            /**
             * Creates a WorkflowActivationJob message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns WorkflowActivationJob
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.WorkflowActivationJob;

            /**
             * Creates a plain object from a WorkflowActivationJob message. Also converts values to other types if specified.
             * @param message WorkflowActivationJob
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.WorkflowActivationJob, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this WorkflowActivationJob to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for WorkflowActivationJob
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an InitializeWorkflow. */
        interface IInitializeWorkflow {

            /** The identifier the lang-specific sdk uses to execute workflow code */
            workflowType?: (string|null);

            /** The workflow id used on the temporal server */
            workflowId?: (string|null);

            /** Inputs to the workflow code */
            "arguments"?: (temporal.api.common.v1.IPayload[]|null);

            /**
             * The seed must be used to initialize the random generator used by SDK.
             * RandomSeedUpdatedAttributes are used to deliver seed updates.
             */
            randomnessSeed?: (Long|null);

            /** Used to add metadata e.g. for tracing and auth, meant to be read and written to by interceptors. */
            headers?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

            /** Identity of the client who requested this execution */
            identity?: (string|null);

            /** If this workflow is a child, information about the parent */
            parentWorkflowInfo?: (coresdk.common.INamespacedWorkflowExecution|null);

            /** Total workflow execution timeout including retries and continue as new. */
            workflowExecutionTimeout?: (google.protobuf.IDuration|null);

            /** Timeout of a single workflow run. */
            workflowRunTimeout?: (google.protobuf.IDuration|null);

            /** Timeout of a single workflow task. */
            workflowTaskTimeout?: (google.protobuf.IDuration|null);

            /**
             * Run id of the previous workflow which continued-as-new or retired or cron executed into this
             * workflow, if any.
             */
            continuedFromExecutionRunId?: (string|null);

            /** If this workflow was a continuation, indicates the type of continuation. */
            continuedInitiator?: (temporal.api.enums.v1.ContinueAsNewInitiator|null);

            /** If this workflow was a continuation and that continuation failed, the details of that. */
            continuedFailure?: (temporal.api.failure.v1.IFailure|null);

            /** If this workflow was a continuation and that continuation completed, the details of that. */
            lastCompletionResult?: (temporal.api.common.v1.IPayloads|null);

            /** This is the very first run id the workflow ever had, following continuation chains. */
            firstExecutionRunId?: (string|null);

            /** This workflow's retry policy */
            retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /** Starting at 1, the number of times we have tried to execute this workflow */
            attempt?: (number|null);

            /** If this workflow runs on a cron schedule, it will appear here */
            cronSchedule?: (string|null);

            /**
             * The absolute time at which the workflow will be timed out.
             * This is passed without change to the next run/retry of a workflow.
             */
            workflowExecutionExpirationTime?: (google.protobuf.ITimestamp|null);

            /**
             * For a cron workflow, this contains the amount of time between when this iteration of
             * the cron workflow was scheduled and when it should run next per its cron_schedule.
             */
            cronScheduleToScheduleInterval?: (google.protobuf.IDuration|null);

            /** User-defined memo */
            memo?: (temporal.api.common.v1.IMemo|null);

            /** Search attributes created/updated when this workflow was started */
            searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

            /** When the workflow execution started event was first written */
            startTime?: (google.protobuf.ITimestamp|null);

            /**
             * Contains information about the root workflow execution. It is possible for the namespace to
             * be different than this workflow if using OSS and cross-namespace children, but this
             * information is not retained. Users should take care to track it by other means in such
             * situations.
             *
             * The root workflow execution is defined as follows:
             * 1. A workflow without parent workflow is its own root workflow.
             * 2. A workflow that has a parent workflow has the same root workflow as its parent workflow.
             *
             * See field in WorkflowExecutionStarted for more detail.
             */
            rootWorkflow?: (temporal.api.common.v1.IWorkflowExecution|null);

            /** Priority of this workflow execution */
            priority?: (temporal.api.common.v1.IPriority|null);
        }

        /** Initialize a new workflow */
        class InitializeWorkflow implements IInitializeWorkflow {

            /**
             * Constructs a new InitializeWorkflow.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IInitializeWorkflow);

            /** The identifier the lang-specific sdk uses to execute workflow code */
            public workflowType: string;

            /** The workflow id used on the temporal server */
            public workflowId: string;

            /** Inputs to the workflow code */
            public arguments: temporal.api.common.v1.IPayload[];

            /**
             * The seed must be used to initialize the random generator used by SDK.
             * RandomSeedUpdatedAttributes are used to deliver seed updates.
             */
            public randomnessSeed: Long;

            /** Used to add metadata e.g. for tracing and auth, meant to be read and written to by interceptors. */
            public headers: { [k: string]: temporal.api.common.v1.IPayload };

            /** Identity of the client who requested this execution */
            public identity: string;

            /** If this workflow is a child, information about the parent */
            public parentWorkflowInfo?: (coresdk.common.INamespacedWorkflowExecution|null);

            /** Total workflow execution timeout including retries and continue as new. */
            public workflowExecutionTimeout?: (google.protobuf.IDuration|null);

            /** Timeout of a single workflow run. */
            public workflowRunTimeout?: (google.protobuf.IDuration|null);

            /** Timeout of a single workflow task. */
            public workflowTaskTimeout?: (google.protobuf.IDuration|null);

            /**
             * Run id of the previous workflow which continued-as-new or retired or cron executed into this
             * workflow, if any.
             */
            public continuedFromExecutionRunId: string;

            /** If this workflow was a continuation, indicates the type of continuation. */
            public continuedInitiator: temporal.api.enums.v1.ContinueAsNewInitiator;

            /** If this workflow was a continuation and that continuation failed, the details of that. */
            public continuedFailure?: (temporal.api.failure.v1.IFailure|null);

            /** If this workflow was a continuation and that continuation completed, the details of that. */
            public lastCompletionResult?: (temporal.api.common.v1.IPayloads|null);

            /** This is the very first run id the workflow ever had, following continuation chains. */
            public firstExecutionRunId: string;

            /** This workflow's retry policy */
            public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /** Starting at 1, the number of times we have tried to execute this workflow */
            public attempt: number;

            /** If this workflow runs on a cron schedule, it will appear here */
            public cronSchedule: string;

            /**
             * The absolute time at which the workflow will be timed out.
             * This is passed without change to the next run/retry of a workflow.
             */
            public workflowExecutionExpirationTime?: (google.protobuf.ITimestamp|null);

            /**
             * For a cron workflow, this contains the amount of time between when this iteration of
             * the cron workflow was scheduled and when it should run next per its cron_schedule.
             */
            public cronScheduleToScheduleInterval?: (google.protobuf.IDuration|null);

            /** User-defined memo */
            public memo?: (temporal.api.common.v1.IMemo|null);

            /** Search attributes created/updated when this workflow was started */
            public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

            /** When the workflow execution started event was first written */
            public startTime?: (google.protobuf.ITimestamp|null);

            /**
             * Contains information about the root workflow execution. It is possible for the namespace to
             * be different than this workflow if using OSS and cross-namespace children, but this
             * information is not retained. Users should take care to track it by other means in such
             * situations.
             *
             * The root workflow execution is defined as follows:
             * 1. A workflow without parent workflow is its own root workflow.
             * 2. A workflow that has a parent workflow has the same root workflow as its parent workflow.
             *
             * See field in WorkflowExecutionStarted for more detail.
             */
            public rootWorkflow?: (temporal.api.common.v1.IWorkflowExecution|null);

            /** Priority of this workflow execution */
            public priority?: (temporal.api.common.v1.IPriority|null);

            /**
             * Creates a new InitializeWorkflow instance using the specified properties.
             * @param [properties] Properties to set
             * @returns InitializeWorkflow instance
             */
            public static create(properties?: coresdk.workflow_activation.IInitializeWorkflow): coresdk.workflow_activation.InitializeWorkflow;

            /**
             * Encodes the specified InitializeWorkflow message. Does not implicitly {@link coresdk.workflow_activation.InitializeWorkflow.verify|verify} messages.
             * @param message InitializeWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IInitializeWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified InitializeWorkflow message, length delimited. Does not implicitly {@link coresdk.workflow_activation.InitializeWorkflow.verify|verify} messages.
             * @param message InitializeWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IInitializeWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an InitializeWorkflow message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns InitializeWorkflow
             * @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): coresdk.workflow_activation.InitializeWorkflow;

            /**
             * Decodes an InitializeWorkflow message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns InitializeWorkflow
             * @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)): coresdk.workflow_activation.InitializeWorkflow;

            /**
             * Creates an InitializeWorkflow message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns InitializeWorkflow
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.InitializeWorkflow;

            /**
             * Creates a plain object from an InitializeWorkflow message. Also converts values to other types if specified.
             * @param message InitializeWorkflow
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.InitializeWorkflow, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this InitializeWorkflow to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for InitializeWorkflow
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a FireTimer. */
        interface IFireTimer {

            /** Sequence number as provided by lang in the corresponding StartTimer command */
            seq?: (number|null);
        }

        /** Notify a workflow that a timer has fired */
        class FireTimer implements IFireTimer {

            /**
             * Constructs a new FireTimer.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IFireTimer);

            /** Sequence number as provided by lang in the corresponding StartTimer command */
            public seq: number;

            /**
             * Creates a new FireTimer instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FireTimer instance
             */
            public static create(properties?: coresdk.workflow_activation.IFireTimer): coresdk.workflow_activation.FireTimer;

            /**
             * Encodes the specified FireTimer message. Does not implicitly {@link coresdk.workflow_activation.FireTimer.verify|verify} messages.
             * @param message FireTimer message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IFireTimer, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FireTimer message, length delimited. Does not implicitly {@link coresdk.workflow_activation.FireTimer.verify|verify} messages.
             * @param message FireTimer message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IFireTimer, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FireTimer message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FireTimer
             * @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): coresdk.workflow_activation.FireTimer;

            /**
             * Decodes a FireTimer message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FireTimer
             * @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)): coresdk.workflow_activation.FireTimer;

            /**
             * Creates a FireTimer message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FireTimer
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.FireTimer;

            /**
             * Creates a plain object from a FireTimer message. Also converts values to other types if specified.
             * @param message FireTimer
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.FireTimer, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FireTimer to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FireTimer
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ResolveActivity. */
        interface IResolveActivity {

            /** Sequence number as provided by lang in the corresponding ScheduleActivity command */
            seq?: (number|null);

            /** ResolveActivity result */
            result?: (coresdk.activity_result.IActivityResolution|null);

            /**
             * Set to true if the resolution is for a local activity. This is used internally by Core and
             * lang does not need to care about it.
             */
            isLocal?: (boolean|null);
        }

        /** Notify a workflow that an activity has been resolved */
        class ResolveActivity implements IResolveActivity {

            /**
             * Constructs a new ResolveActivity.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IResolveActivity);

            /** Sequence number as provided by lang in the corresponding ScheduleActivity command */
            public seq: number;

            /** ResolveActivity result. */
            public result?: (coresdk.activity_result.IActivityResolution|null);

            /**
             * Set to true if the resolution is for a local activity. This is used internally by Core and
             * lang does not need to care about it.
             */
            public isLocal: boolean;

            /**
             * Creates a new ResolveActivity instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResolveActivity instance
             */
            public static create(properties?: coresdk.workflow_activation.IResolveActivity): coresdk.workflow_activation.ResolveActivity;

            /**
             * Encodes the specified ResolveActivity message. Does not implicitly {@link coresdk.workflow_activation.ResolveActivity.verify|verify} messages.
             * @param message ResolveActivity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IResolveActivity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResolveActivity message, length delimited. Does not implicitly {@link coresdk.workflow_activation.ResolveActivity.verify|verify} messages.
             * @param message ResolveActivity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IResolveActivity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResolveActivity message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResolveActivity
             * @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): coresdk.workflow_activation.ResolveActivity;

            /**
             * Decodes a ResolveActivity message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResolveActivity
             * @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)): coresdk.workflow_activation.ResolveActivity;

            /**
             * Creates a ResolveActivity message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResolveActivity
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.ResolveActivity;

            /**
             * Creates a plain object from a ResolveActivity message. Also converts values to other types if specified.
             * @param message ResolveActivity
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.ResolveActivity, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResolveActivity to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResolveActivity
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ResolveChildWorkflowExecutionStart. */
        interface IResolveChildWorkflowExecutionStart {

            /** Sequence number as provided by lang in the corresponding StartChildWorkflowExecution command */
            seq?: (number|null);

            /** ResolveChildWorkflowExecutionStart succeeded */
            succeeded?: (coresdk.workflow_activation.IResolveChildWorkflowExecutionStartSuccess|null);

            /** ResolveChildWorkflowExecutionStart failed */
            failed?: (coresdk.workflow_activation.IResolveChildWorkflowExecutionStartFailure|null);

            /** ResolveChildWorkflowExecutionStart cancelled */
            cancelled?: (coresdk.workflow_activation.IResolveChildWorkflowExecutionStartCancelled|null);
        }

        /**
         * Notify a workflow that a start child workflow execution request has succeeded, failed or was
         * cancelled.
         */
        class ResolveChildWorkflowExecutionStart implements IResolveChildWorkflowExecutionStart {

            /**
             * Constructs a new ResolveChildWorkflowExecutionStart.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IResolveChildWorkflowExecutionStart);

            /** Sequence number as provided by lang in the corresponding StartChildWorkflowExecution command */
            public seq: number;

            /** ResolveChildWorkflowExecutionStart succeeded. */
            public succeeded?: (coresdk.workflow_activation.IResolveChildWorkflowExecutionStartSuccess|null);

            /** ResolveChildWorkflowExecutionStart failed. */
            public failed?: (coresdk.workflow_activation.IResolveChildWorkflowExecutionStartFailure|null);

            /** ResolveChildWorkflowExecutionStart cancelled. */
            public cancelled?: (coresdk.workflow_activation.IResolveChildWorkflowExecutionStartCancelled|null);

            /** ResolveChildWorkflowExecutionStart status. */
            public status?: ("succeeded"|"failed"|"cancelled");

            /**
             * Creates a new ResolveChildWorkflowExecutionStart instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResolveChildWorkflowExecutionStart instance
             */
            public static create(properties?: coresdk.workflow_activation.IResolveChildWorkflowExecutionStart): coresdk.workflow_activation.ResolveChildWorkflowExecutionStart;

            /**
             * Encodes the specified ResolveChildWorkflowExecutionStart message. Does not implicitly {@link coresdk.workflow_activation.ResolveChildWorkflowExecutionStart.verify|verify} messages.
             * @param message ResolveChildWorkflowExecutionStart message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IResolveChildWorkflowExecutionStart, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResolveChildWorkflowExecutionStart message, length delimited. Does not implicitly {@link coresdk.workflow_activation.ResolveChildWorkflowExecutionStart.verify|verify} messages.
             * @param message ResolveChildWorkflowExecutionStart message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IResolveChildWorkflowExecutionStart, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResolveChildWorkflowExecutionStart message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResolveChildWorkflowExecutionStart
             * @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): coresdk.workflow_activation.ResolveChildWorkflowExecutionStart;

            /**
             * Decodes a ResolveChildWorkflowExecutionStart message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResolveChildWorkflowExecutionStart
             * @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)): coresdk.workflow_activation.ResolveChildWorkflowExecutionStart;

            /**
             * Creates a ResolveChildWorkflowExecutionStart message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResolveChildWorkflowExecutionStart
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.ResolveChildWorkflowExecutionStart;

            /**
             * Creates a plain object from a ResolveChildWorkflowExecutionStart message. Also converts values to other types if specified.
             * @param message ResolveChildWorkflowExecutionStart
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.ResolveChildWorkflowExecutionStart, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResolveChildWorkflowExecutionStart to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResolveChildWorkflowExecutionStart
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ResolveChildWorkflowExecutionStartSuccess. */
        interface IResolveChildWorkflowExecutionStartSuccess {

            /** ResolveChildWorkflowExecutionStartSuccess runId */
            runId?: (string|null);
        }

        /** Simply pass the run_id to lang */
        class ResolveChildWorkflowExecutionStartSuccess implements IResolveChildWorkflowExecutionStartSuccess {

            /**
             * Constructs a new ResolveChildWorkflowExecutionStartSuccess.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartSuccess);

            /** ResolveChildWorkflowExecutionStartSuccess runId. */
            public runId: string;

            /**
             * Creates a new ResolveChildWorkflowExecutionStartSuccess instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResolveChildWorkflowExecutionStartSuccess instance
             */
            public static create(properties?: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartSuccess): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccess;

            /**
             * Encodes the specified ResolveChildWorkflowExecutionStartSuccess message. Does not implicitly {@link coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccess.verify|verify} messages.
             * @param message ResolveChildWorkflowExecutionStartSuccess message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartSuccess, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResolveChildWorkflowExecutionStartSuccess message, length delimited. Does not implicitly {@link coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccess.verify|verify} messages.
             * @param message ResolveChildWorkflowExecutionStartSuccess message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartSuccess, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResolveChildWorkflowExecutionStartSuccess message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResolveChildWorkflowExecutionStartSuccess
             * @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): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccess;

            /**
             * Decodes a ResolveChildWorkflowExecutionStartSuccess message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResolveChildWorkflowExecutionStartSuccess
             * @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)): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccess;

            /**
             * Creates a ResolveChildWorkflowExecutionStartSuccess message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResolveChildWorkflowExecutionStartSuccess
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccess;

            /**
             * Creates a plain object from a ResolveChildWorkflowExecutionStartSuccess message. Also converts values to other types if specified.
             * @param message ResolveChildWorkflowExecutionStartSuccess
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccess, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResolveChildWorkflowExecutionStartSuccess to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResolveChildWorkflowExecutionStartSuccess
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ResolveChildWorkflowExecutionStartFailure. */
        interface IResolveChildWorkflowExecutionStartFailure {

            /**
             * Lang should have this information but it's more convenient to pass it back
             * for error construction on the lang side.
             */
            workflowId?: (string|null);

            /** ResolveChildWorkflowExecutionStartFailure workflowType */
            workflowType?: (string|null);

            /** ResolveChildWorkflowExecutionStartFailure cause */
            cause?: (coresdk.child_workflow.StartChildWorkflowExecutionFailedCause|null);
        }

        /** Provide lang the cause of failure */
        class ResolveChildWorkflowExecutionStartFailure implements IResolveChildWorkflowExecutionStartFailure {

            /**
             * Constructs a new ResolveChildWorkflowExecutionStartFailure.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartFailure);

            /**
             * Lang should have this information but it's more convenient to pass it back
             * for error construction on the lang side.
             */
            public workflowId: string;

            /** ResolveChildWorkflowExecutionStartFailure workflowType. */
            public workflowType: string;

            /** ResolveChildWorkflowExecutionStartFailure cause. */
            public cause: coresdk.child_workflow.StartChildWorkflowExecutionFailedCause;

            /**
             * Creates a new ResolveChildWorkflowExecutionStartFailure instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResolveChildWorkflowExecutionStartFailure instance
             */
            public static create(properties?: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartFailure): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailure;

            /**
             * Encodes the specified ResolveChildWorkflowExecutionStartFailure message. Does not implicitly {@link coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailure.verify|verify} messages.
             * @param message ResolveChildWorkflowExecutionStartFailure message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartFailure, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResolveChildWorkflowExecutionStartFailure message, length delimited. Does not implicitly {@link coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailure.verify|verify} messages.
             * @param message ResolveChildWorkflowExecutionStartFailure message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartFailure, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResolveChildWorkflowExecutionStartFailure message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResolveChildWorkflowExecutionStartFailure
             * @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): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailure;

            /**
             * Decodes a ResolveChildWorkflowExecutionStartFailure message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResolveChildWorkflowExecutionStartFailure
             * @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)): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailure;

            /**
             * Creates a ResolveChildWorkflowExecutionStartFailure message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResolveChildWorkflowExecutionStartFailure
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailure;

            /**
             * Creates a plain object from a ResolveChildWorkflowExecutionStartFailure message. Also converts values to other types if specified.
             * @param message ResolveChildWorkflowExecutionStartFailure
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResolveChildWorkflowExecutionStartFailure to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResolveChildWorkflowExecutionStartFailure
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ResolveChildWorkflowExecutionStartCancelled. */
        interface IResolveChildWorkflowExecutionStartCancelled {

            /** ResolveChildWorkflowExecutionStartCancelled failure */
            failure?: (temporal.api.failure.v1.IFailure|null);
        }

        /**
         * `failure` should be ChildWorkflowFailure with cause set to CancelledFailure.
         * The failure is constructed in core for lang's convenience.
         */
        class ResolveChildWorkflowExecutionStartCancelled implements IResolveChildWorkflowExecutionStartCancelled {

            /**
             * Constructs a new ResolveChildWorkflowExecutionStartCancelled.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartCancelled);

            /** ResolveChildWorkflowExecutionStartCancelled failure. */
            public failure?: (temporal.api.failure.v1.IFailure|null);

            /**
             * Creates a new ResolveChildWorkflowExecutionStartCancelled instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResolveChildWorkflowExecutionStartCancelled instance
             */
            public static create(properties?: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartCancelled): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelled;

            /**
             * Encodes the specified ResolveChildWorkflowExecutionStartCancelled message. Does not implicitly {@link coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelled.verify|verify} messages.
             * @param message ResolveChildWorkflowExecutionStartCancelled message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartCancelled, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResolveChildWorkflowExecutionStartCancelled message, length delimited. Does not implicitly {@link coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelled.verify|verify} messages.
             * @param message ResolveChildWorkflowExecutionStartCancelled message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IResolveChildWorkflowExecutionStartCancelled, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResolveChildWorkflowExecutionStartCancelled message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResolveChildWorkflowExecutionStartCancelled
             * @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): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelled;

            /**
             * Decodes a ResolveChildWorkflowExecutionStartCancelled message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResolveChildWorkflowExecutionStartCancelled
             * @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)): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelled;

            /**
             * Creates a ResolveChildWorkflowExecutionStartCancelled message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResolveChildWorkflowExecutionStartCancelled
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelled;

            /**
             * Creates a plain object from a ResolveChildWorkflowExecutionStartCancelled message. Also converts values to other types if specified.
             * @param message ResolveChildWorkflowExecutionStartCancelled
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelled, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResolveChildWorkflowExecutionStartCancelled to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResolveChildWorkflowExecutionStartCancelled
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ResolveChildWorkflowExecution. */
        interface IResolveChildWorkflowExecution {

            /** Sequence number as provided by lang in the corresponding StartChildWorkflowExecution command */
            seq?: (number|null);

            /** ResolveChildWorkflowExecution result */
            result?: (coresdk.child_workflow.IChildWorkflowResult|null);
        }

        /** Notify a workflow that a child workflow execution has been resolved */
        class ResolveChildWorkflowExecution implements IResolveChildWorkflowExecution {

            /**
             * Constructs a new ResolveChildWorkflowExecution.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IResolveChildWorkflowExecution);

            /** Sequence number as provided by lang in the corresponding StartChildWorkflowExecution command */
            public seq: number;

            /** ResolveChildWorkflowExecution result. */
            public result?: (coresdk.child_workflow.IChildWorkflowResult|null);

            /**
             * Creates a new ResolveChildWorkflowExecution instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResolveChildWorkflowExecution instance
             */
            public static create(properties?: coresdk.workflow_activation.IResolveChildWorkflowExecution): coresdk.workflow_activation.ResolveChildWorkflowExecution;

            /**
             * Encodes the specified ResolveChildWorkflowExecution message. Does not implicitly {@link coresdk.workflow_activation.ResolveChildWorkflowExecution.verify|verify} messages.
             * @param message ResolveChildWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IResolveChildWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResolveChildWorkflowExecution message, length delimited. Does not implicitly {@link coresdk.workflow_activation.ResolveChildWorkflowExecution.verify|verify} messages.
             * @param message ResolveChildWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IResolveChildWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResolveChildWorkflowExecution message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResolveChildWorkflowExecution
             * @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): coresdk.workflow_activation.ResolveChildWorkflowExecution;

            /**
             * Decodes a ResolveChildWorkflowExecution message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResolveChildWorkflowExecution
             * @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)): coresdk.workflow_activation.ResolveChildWorkflowExecution;

            /**
             * Creates a ResolveChildWorkflowExecution message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResolveChildWorkflowExecution
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.ResolveChildWorkflowExecution;

            /**
             * Creates a plain object from a ResolveChildWorkflowExecution message. Also converts values to other types if specified.
             * @param message ResolveChildWorkflowExecution
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.ResolveChildWorkflowExecution, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResolveChildWorkflowExecution to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResolveChildWorkflowExecution
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an UpdateRandomSeed. */
        interface IUpdateRandomSeed {

            /** UpdateRandomSeed randomnessSeed */
            randomnessSeed?: (Long|null);
        }

        /** Update the workflow's random seed */
        class UpdateRandomSeed implements IUpdateRandomSeed {

            /**
             * Constructs a new UpdateRandomSeed.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IUpdateRandomSeed);

            /** UpdateRandomSeed randomnessSeed. */
            public randomnessSeed: Long;

            /**
             * Creates a new UpdateRandomSeed instance using the specified properties.
             * @param [properties] Properties to set
             * @returns UpdateRandomSeed instance
             */
            public static create(properties?: coresdk.workflow_activation.IUpdateRandomSeed): coresdk.workflow_activation.UpdateRandomSeed;

            /**
             * Encodes the specified UpdateRandomSeed message. Does not implicitly {@link coresdk.workflow_activation.UpdateRandomSeed.verify|verify} messages.
             * @param message UpdateRandomSeed message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IUpdateRandomSeed, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified UpdateRandomSeed message, length delimited. Does not implicitly {@link coresdk.workflow_activation.UpdateRandomSeed.verify|verify} messages.
             * @param message UpdateRandomSeed message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IUpdateRandomSeed, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an UpdateRandomSeed message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns UpdateRandomSeed
             * @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): coresdk.workflow_activation.UpdateRandomSeed;

            /**
             * Decodes an UpdateRandomSeed message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns UpdateRandomSeed
             * @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)): coresdk.workflow_activation.UpdateRandomSeed;

            /**
             * Creates an UpdateRandomSeed message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns UpdateRandomSeed
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.UpdateRandomSeed;

            /**
             * Creates a plain object from an UpdateRandomSeed message. Also converts values to other types if specified.
             * @param message UpdateRandomSeed
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.UpdateRandomSeed, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this UpdateRandomSeed to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for UpdateRandomSeed
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a QueryWorkflow. */
        interface IQueryWorkflow {

            /**
             * For PollWFTResp `query` field, this will be set to the special value `legacy`. For the
             * `queries` field, the server provides a unique identifier. If it is a `legacy` query,
             * lang cannot issue any commands in response other than to answer the query.
             */
            queryId?: (string|null);

            /** The query's function/method/etc name */
            queryType?: (string|null);

            /** QueryWorkflow arguments */
            "arguments"?: (temporal.api.common.v1.IPayload[]|null);

            /** Headers attached to the query */
            headers?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);
        }

        /** Query a workflow */
        class QueryWorkflow implements IQueryWorkflow {

            /**
             * Constructs a new QueryWorkflow.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IQueryWorkflow);

            /**
             * For PollWFTResp `query` field, this will be set to the special value `legacy`. For the
             * `queries` field, the server provides a unique identifier. If it is a `legacy` query,
             * lang cannot issue any commands in response other than to answer the query.
             */
            public queryId: string;

            /** The query's function/method/etc name */
            public queryType: string;

            /** QueryWorkflow arguments. */
            public arguments: temporal.api.common.v1.IPayload[];

            /** Headers attached to the query */
            public headers: { [k: string]: temporal.api.common.v1.IPayload };

            /**
             * Creates a new QueryWorkflow instance using the specified properties.
             * @param [properties] Properties to set
             * @returns QueryWorkflow instance
             */
            public static create(properties?: coresdk.workflow_activation.IQueryWorkflow): coresdk.workflow_activation.QueryWorkflow;

            /**
             * Encodes the specified QueryWorkflow message. Does not implicitly {@link coresdk.workflow_activation.QueryWorkflow.verify|verify} messages.
             * @param message QueryWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IQueryWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified QueryWorkflow message, length delimited. Does not implicitly {@link coresdk.workflow_activation.QueryWorkflow.verify|verify} messages.
             * @param message QueryWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IQueryWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a QueryWorkflow message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns QueryWorkflow
             * @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): coresdk.workflow_activation.QueryWorkflow;

            /**
             * Decodes a QueryWorkflow message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns QueryWorkflow
             * @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)): coresdk.workflow_activation.QueryWorkflow;

            /**
             * Creates a QueryWorkflow message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns QueryWorkflow
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.QueryWorkflow;

            /**
             * Creates a plain object from a QueryWorkflow message. Also converts values to other types if specified.
             * @param message QueryWorkflow
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.QueryWorkflow, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this QueryWorkflow to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for QueryWorkflow
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CancelWorkflow. */
        interface ICancelWorkflow {

            /** User-specified reason the cancel request was issued */
            reason?: (string|null);
        }

        /** Cancel a running workflow */
        class CancelWorkflow implements ICancelWorkflow {

            /**
             * Constructs a new CancelWorkflow.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.ICancelWorkflow);

            /** User-specified reason the cancel request was issued */
            public reason: string;

            /**
             * Creates a new CancelWorkflow instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CancelWorkflow instance
             */
            public static create(properties?: coresdk.workflow_activation.ICancelWorkflow): coresdk.workflow_activation.CancelWorkflow;

            /**
             * Encodes the specified CancelWorkflow message. Does not implicitly {@link coresdk.workflow_activation.CancelWorkflow.verify|verify} messages.
             * @param message CancelWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.ICancelWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CancelWorkflow message, length delimited. Does not implicitly {@link coresdk.workflow_activation.CancelWorkflow.verify|verify} messages.
             * @param message CancelWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.ICancelWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CancelWorkflow message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CancelWorkflow
             * @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): coresdk.workflow_activation.CancelWorkflow;

            /**
             * Decodes a CancelWorkflow message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CancelWorkflow
             * @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)): coresdk.workflow_activation.CancelWorkflow;

            /**
             * Creates a CancelWorkflow message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CancelWorkflow
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.CancelWorkflow;

            /**
             * Creates a plain object from a CancelWorkflow message. Also converts values to other types if specified.
             * @param message CancelWorkflow
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.CancelWorkflow, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CancelWorkflow to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CancelWorkflow
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a SignalWorkflow. */
        interface ISignalWorkflow {

            /** SignalWorkflow signalName */
            signalName?: (string|null);

            /** SignalWorkflow input */
            input?: (temporal.api.common.v1.IPayload[]|null);

            /** Identity of the sender of the signal */
            identity?: (string|null);

            /** Headers attached to the signal */
            headers?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);
        }

        /** Send a signal to a workflow */
        class SignalWorkflow implements ISignalWorkflow {

            /**
             * Constructs a new SignalWorkflow.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.ISignalWorkflow);

            /** SignalWorkflow signalName. */
            public signalName: string;

            /** SignalWorkflow input. */
            public input: temporal.api.common.v1.IPayload[];

            /** Identity of the sender of the signal */
            public identity: string;

            /** Headers attached to the signal */
            public headers: { [k: string]: temporal.api.common.v1.IPayload };

            /**
             * Creates a new SignalWorkflow instance using the specified properties.
             * @param [properties] Properties to set
             * @returns SignalWorkflow instance
             */
            public static create(properties?: coresdk.workflow_activation.ISignalWorkflow): coresdk.workflow_activation.SignalWorkflow;

            /**
             * Encodes the specified SignalWorkflow message. Does not implicitly {@link coresdk.workflow_activation.SignalWorkflow.verify|verify} messages.
             * @param message SignalWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.ISignalWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified SignalWorkflow message, length delimited. Does not implicitly {@link coresdk.workflow_activation.SignalWorkflow.verify|verify} messages.
             * @param message SignalWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.ISignalWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a SignalWorkflow message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns SignalWorkflow
             * @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): coresdk.workflow_activation.SignalWorkflow;

            /**
             * Decodes a SignalWorkflow message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns SignalWorkflow
             * @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)): coresdk.workflow_activation.SignalWorkflow;

            /**
             * Creates a SignalWorkflow message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns SignalWorkflow
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.SignalWorkflow;

            /**
             * Creates a plain object from a SignalWorkflow message. Also converts values to other types if specified.
             * @param message SignalWorkflow
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.SignalWorkflow, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this SignalWorkflow to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for SignalWorkflow
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a NotifyHasPatch. */
        interface INotifyHasPatch {

            /** NotifyHasPatch patchId */
            patchId?: (string|null);
        }

        /**
         * Inform lang what the result of a call to `patched` or similar API should be -- this is always
         * sent pre-emptively, so any time it is sent the change is present
         */
        class NotifyHasPatch implements INotifyHasPatch {

            /**
             * Constructs a new NotifyHasPatch.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.INotifyHasPatch);

            /** NotifyHasPatch patchId. */
            public patchId: string;

            /**
             * Creates a new NotifyHasPatch instance using the specified properties.
             * @param [properties] Properties to set
             * @returns NotifyHasPatch instance
             */
            public static create(properties?: coresdk.workflow_activation.INotifyHasPatch): coresdk.workflow_activation.NotifyHasPatch;

            /**
             * Encodes the specified NotifyHasPatch message. Does not implicitly {@link coresdk.workflow_activation.NotifyHasPatch.verify|verify} messages.
             * @param message NotifyHasPatch message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.INotifyHasPatch, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified NotifyHasPatch message, length delimited. Does not implicitly {@link coresdk.workflow_activation.NotifyHasPatch.verify|verify} messages.
             * @param message NotifyHasPatch message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.INotifyHasPatch, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a NotifyHasPatch message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns NotifyHasPatch
             * @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): coresdk.workflow_activation.NotifyHasPatch;

            /**
             * Decodes a NotifyHasPatch message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns NotifyHasPatch
             * @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)): coresdk.workflow_activation.NotifyHasPatch;

            /**
             * Creates a NotifyHasPatch message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns NotifyHasPatch
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.NotifyHasPatch;

            /**
             * Creates a plain object from a NotifyHasPatch message. Also converts values to other types if specified.
             * @param message NotifyHasPatch
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.NotifyHasPatch, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this NotifyHasPatch to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for NotifyHasPatch
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ResolveSignalExternalWorkflow. */
        interface IResolveSignalExternalWorkflow {

            /**
             * Sequence number as provided by lang in the corresponding SignalExternalWorkflowExecution
             * command
             */
            seq?: (number|null);

            /**
             * If populated, this signal either failed to be sent or was cancelled depending on failure
             * type / info.
             */
            failure?: (temporal.api.failure.v1.IFailure|null);
        }

        /** Represents a ResolveSignalExternalWorkflow. */
        class ResolveSignalExternalWorkflow implements IResolveSignalExternalWorkflow {

            /**
             * Constructs a new ResolveSignalExternalWorkflow.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IResolveSignalExternalWorkflow);

            /**
             * Sequence number as provided by lang in the corresponding SignalExternalWorkflowExecution
             * command
             */
            public seq: number;

            /**
             * If populated, this signal either failed to be sent or was cancelled depending on failure
             * type / info.
             */
            public failure?: (temporal.api.failure.v1.IFailure|null);

            /**
             * Creates a new ResolveSignalExternalWorkflow instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResolveSignalExternalWorkflow instance
             */
            public static create(properties?: coresdk.workflow_activation.IResolveSignalExternalWorkflow): coresdk.workflow_activation.ResolveSignalExternalWorkflow;

            /**
             * Encodes the specified ResolveSignalExternalWorkflow message. Does not implicitly {@link coresdk.workflow_activation.ResolveSignalExternalWorkflow.verify|verify} messages.
             * @param message ResolveSignalExternalWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IResolveSignalExternalWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResolveSignalExternalWorkflow message, length delimited. Does not implicitly {@link coresdk.workflow_activation.ResolveSignalExternalWorkflow.verify|verify} messages.
             * @param message ResolveSignalExternalWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IResolveSignalExternalWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResolveSignalExternalWorkflow message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResolveSignalExternalWorkflow
             * @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): coresdk.workflow_activation.ResolveSignalExternalWorkflow;

            /**
             * Decodes a ResolveSignalExternalWorkflow message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResolveSignalExternalWorkflow
             * @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)): coresdk.workflow_activation.ResolveSignalExternalWorkflow;

            /**
             * Creates a ResolveSignalExternalWorkflow message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResolveSignalExternalWorkflow
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.ResolveSignalExternalWorkflow;

            /**
             * Creates a plain object from a ResolveSignalExternalWorkflow message. Also converts values to other types if specified.
             * @param message ResolveSignalExternalWorkflow
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.ResolveSignalExternalWorkflow, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResolveSignalExternalWorkflow to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResolveSignalExternalWorkflow
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ResolveRequestCancelExternalWorkflow. */
        interface IResolveRequestCancelExternalWorkflow {

            /**
             * Sequence number as provided by lang in the corresponding
             * RequestCancelExternalWorkflowExecution command
             */
            seq?: (number|null);

            /**
             * If populated, this signal either failed to be sent or was cancelled depending on failure
             * type / info.
             */
            failure?: (temporal.api.failure.v1.IFailure|null);
        }

        /** Represents a ResolveRequestCancelExternalWorkflow. */
        class ResolveRequestCancelExternalWorkflow implements IResolveRequestCancelExternalWorkflow {

            /**
             * Constructs a new ResolveRequestCancelExternalWorkflow.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IResolveRequestCancelExternalWorkflow);

            /**
             * Sequence number as provided by lang in the corresponding
             * RequestCancelExternalWorkflowExecution command
             */
            public seq: number;

            /**
             * If populated, this signal either failed to be sent or was cancelled depending on failure
             * type / info.
             */
            public failure?: (temporal.api.failure.v1.IFailure|null);

            /**
             * Creates a new ResolveRequestCancelExternalWorkflow instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResolveRequestCancelExternalWorkflow instance
             */
            public static create(properties?: coresdk.workflow_activation.IResolveRequestCancelExternalWorkflow): coresdk.workflow_activation.ResolveRequestCancelExternalWorkflow;

            /**
             * Encodes the specified ResolveRequestCancelExternalWorkflow message. Does not implicitly {@link coresdk.workflow_activation.ResolveRequestCancelExternalWorkflow.verify|verify} messages.
             * @param message ResolveRequestCancelExternalWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IResolveRequestCancelExternalWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResolveRequestCancelExternalWorkflow message, length delimited. Does not implicitly {@link coresdk.workflow_activation.ResolveRequestCancelExternalWorkflow.verify|verify} messages.
             * @param message ResolveRequestCancelExternalWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IResolveRequestCancelExternalWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResolveRequestCancelExternalWorkflow message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResolveRequestCancelExternalWorkflow
             * @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): coresdk.workflow_activation.ResolveRequestCancelExternalWorkflow;

            /**
             * Decodes a ResolveRequestCancelExternalWorkflow message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResolveRequestCancelExternalWorkflow
             * @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)): coresdk.workflow_activation.ResolveRequestCancelExternalWorkflow;

            /**
             * Creates a ResolveRequestCancelExternalWorkflow message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResolveRequestCancelExternalWorkflow
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.ResolveRequestCancelExternalWorkflow;

            /**
             * Creates a plain object from a ResolveRequestCancelExternalWorkflow message. Also converts values to other types if specified.
             * @param message ResolveRequestCancelExternalWorkflow
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.ResolveRequestCancelExternalWorkflow, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResolveRequestCancelExternalWorkflow to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResolveRequestCancelExternalWorkflow
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a DoUpdate. */
        interface IDoUpdate {

            /** A workflow-unique identifier for this update */
            id?: (string|null);

            /**
             * The protocol message instance ID - this is used to uniquely track the ID server side and
             * internally.
             */
            protocolInstanceId?: (string|null);

            /** The name of the update handler */
            name?: (string|null);

            /** The input to the update */
            input?: (temporal.api.common.v1.IPayload[]|null);

            /** Headers attached to the update */
            headers?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

            /**
             * Remaining metadata associated with the update. The `update_id` field is stripped from here
             * and moved to `id`, since it is guaranteed to be present.
             */
            meta?: (temporal.api.update.v1.IMeta|null);

            /**
             * If set true, lang must run the update's validator before running the handler. This will be
             * set false during replay, since validation is not re-run during replay.
             */
            runValidator?: (boolean|null);
        }

        /**
         * Lang is requested to invoke an update handler on the workflow. Lang should invoke the update
         * validator first (if requested). If it accepts the update, immediately invoke the update handler.
         * Lang must reply to the activation containing this job with an `UpdateResponse`.
         */
        class DoUpdate implements IDoUpdate {

            /**
             * Constructs a new DoUpdate.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IDoUpdate);

            /** A workflow-unique identifier for this update */
            public id: string;

            /**
             * The protocol message instance ID - this is used to uniquely track the ID server side and
             * internally.
             */
            public protocolInstanceId: string;

            /** The name of the update handler */
            public name: string;

            /** The input to the update */
            public input: temporal.api.common.v1.IPayload[];

            /** Headers attached to the update */
            public headers: { [k: string]: temporal.api.common.v1.IPayload };

            /**
             * Remaining metadata associated with the update. The `update_id` field is stripped from here
             * and moved to `id`, since it is guaranteed to be present.
             */
            public meta?: (temporal.api.update.v1.IMeta|null);

            /**
             * If set true, lang must run the update's validator before running the handler. This will be
             * set false during replay, since validation is not re-run during replay.
             */
            public runValidator: boolean;

            /**
             * Creates a new DoUpdate instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DoUpdate instance
             */
            public static create(properties?: coresdk.workflow_activation.IDoUpdate): coresdk.workflow_activation.DoUpdate;

            /**
             * Encodes the specified DoUpdate message. Does not implicitly {@link coresdk.workflow_activation.DoUpdate.verify|verify} messages.
             * @param message DoUpdate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IDoUpdate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DoUpdate message, length delimited. Does not implicitly {@link coresdk.workflow_activation.DoUpdate.verify|verify} messages.
             * @param message DoUpdate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IDoUpdate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DoUpdate message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DoUpdate
             * @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): coresdk.workflow_activation.DoUpdate;

            /**
             * Decodes a DoUpdate message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DoUpdate
             * @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)): coresdk.workflow_activation.DoUpdate;

            /**
             * Creates a DoUpdate message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DoUpdate
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.DoUpdate;

            /**
             * Creates a plain object from a DoUpdate message. Also converts values to other types if specified.
             * @param message DoUpdate
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.DoUpdate, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DoUpdate to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DoUpdate
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ResolveNexusOperationStart. */
        interface IResolveNexusOperationStart {

            /** Sequence number as provided by lang in the corresponding ScheduleNexusOperation command */
            seq?: (number|null);

            /**
             * The operation started asynchronously. Contains a token that can be used to perform
             * operations on the started operation by, ex, clients. A `ResolveNexusOperation` job will
             * follow at some point.
             */
            operationToken?: (string|null);

            /**
             * If true the operation "started" but only because it's also already resolved. A
             * `ResolveNexusOperation` job will be in the same activation.
             */
            startedSync?: (boolean|null);

            /**
             * The operation either failed to start, was cancelled before it started, timed out, or
             * failed synchronously. Details are included inside the message. In this case, the
             * subsequent ResolveNexusOperation will never be sent.
             */
            failed?: (temporal.api.failure.v1.IFailure|null);
        }

        /** Represents a ResolveNexusOperationStart. */
        class ResolveNexusOperationStart implements IResolveNexusOperationStart {

            /**
             * Constructs a new ResolveNexusOperationStart.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IResolveNexusOperationStart);

            /** Sequence number as provided by lang in the corresponding ScheduleNexusOperation command */
            public seq: number;

            /**
             * The operation started asynchronously. Contains a token that can be used to perform
             * operations on the started operation by, ex, clients. A `ResolveNexusOperation` job will
             * follow at some point.
             */
            public operationToken?: (string|null);

            /**
             * If true the operation "started" but only because it's also already resolved. A
             * `ResolveNexusOperation` job will be in the same activation.
             */
            public startedSync?: (boolean|null);

            /**
             * The operation either failed to start, was cancelled before it started, timed out, or
             * failed synchronously. Details are included inside the message. In this case, the
             * subsequent ResolveNexusOperation will never be sent.
             */
            public failed?: (temporal.api.failure.v1.IFailure|null);

            /** ResolveNexusOperationStart status. */
            public status?: ("operationToken"|"startedSync"|"failed");

            /**
             * Creates a new ResolveNexusOperationStart instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResolveNexusOperationStart instance
             */
            public static create(properties?: coresdk.workflow_activation.IResolveNexusOperationStart): coresdk.workflow_activation.ResolveNexusOperationStart;

            /**
             * Encodes the specified ResolveNexusOperationStart message. Does not implicitly {@link coresdk.workflow_activation.ResolveNexusOperationStart.verify|verify} messages.
             * @param message ResolveNexusOperationStart message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IResolveNexusOperationStart, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResolveNexusOperationStart message, length delimited. Does not implicitly {@link coresdk.workflow_activation.ResolveNexusOperationStart.verify|verify} messages.
             * @param message ResolveNexusOperationStart message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IResolveNexusOperationStart, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResolveNexusOperationStart message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResolveNexusOperationStart
             * @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): coresdk.workflow_activation.ResolveNexusOperationStart;

            /**
             * Decodes a ResolveNexusOperationStart message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResolveNexusOperationStart
             * @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)): coresdk.workflow_activation.ResolveNexusOperationStart;

            /**
             * Creates a ResolveNexusOperationStart message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResolveNexusOperationStart
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.ResolveNexusOperationStart;

            /**
             * Creates a plain object from a ResolveNexusOperationStart message. Also converts values to other types if specified.
             * @param message ResolveNexusOperationStart
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.ResolveNexusOperationStart, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResolveNexusOperationStart to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResolveNexusOperationStart
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ResolveNexusOperation. */
        interface IResolveNexusOperation {

            /** Sequence number as provided by lang in the corresponding ScheduleNexusOperation command */
            seq?: (number|null);

            /** ResolveNexusOperation result */
            result?: (coresdk.nexus.INexusOperationResult|null);
        }

        /** Represents a ResolveNexusOperation. */
        class ResolveNexusOperation implements IResolveNexusOperation {

            /**
             * Constructs a new ResolveNexusOperation.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IResolveNexusOperation);

            /** Sequence number as provided by lang in the corresponding ScheduleNexusOperation command */
            public seq: number;

            /** ResolveNexusOperation result. */
            public result?: (coresdk.nexus.INexusOperationResult|null);

            /**
             * Creates a new ResolveNexusOperation instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResolveNexusOperation instance
             */
            public static create(properties?: coresdk.workflow_activation.IResolveNexusOperation): coresdk.workflow_activation.ResolveNexusOperation;

            /**
             * Encodes the specified ResolveNexusOperation message. Does not implicitly {@link coresdk.workflow_activation.ResolveNexusOperation.verify|verify} messages.
             * @param message ResolveNexusOperation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IResolveNexusOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResolveNexusOperation message, length delimited. Does not implicitly {@link coresdk.workflow_activation.ResolveNexusOperation.verify|verify} messages.
             * @param message ResolveNexusOperation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IResolveNexusOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResolveNexusOperation message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResolveNexusOperation
             * @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): coresdk.workflow_activation.ResolveNexusOperation;

            /**
             * Decodes a ResolveNexusOperation message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResolveNexusOperation
             * @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)): coresdk.workflow_activation.ResolveNexusOperation;

            /**
             * Creates a ResolveNexusOperation message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResolveNexusOperation
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.ResolveNexusOperation;

            /**
             * Creates a plain object from a ResolveNexusOperation message. Also converts values to other types if specified.
             * @param message ResolveNexusOperation
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.ResolveNexusOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResolveNexusOperation to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResolveNexusOperation
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a RemoveFromCache. */
        interface IRemoveFromCache {

            /** RemoveFromCache message */
            message?: (string|null);

            /** RemoveFromCache reason */
            reason?: (coresdk.workflow_activation.RemoveFromCache.EvictionReason|null);
        }

        /** Represents a RemoveFromCache. */
        class RemoveFromCache implements IRemoveFromCache {

            /**
             * Constructs a new RemoveFromCache.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_activation.IRemoveFromCache);

            /** RemoveFromCache message. */
            public message: string;

            /** RemoveFromCache reason. */
            public reason: coresdk.workflow_activation.RemoveFromCache.EvictionReason;

            /**
             * Creates a new RemoveFromCache instance using the specified properties.
             * @param [properties] Properties to set
             * @returns RemoveFromCache instance
             */
            public static create(properties?: coresdk.workflow_activation.IRemoveFromCache): coresdk.workflow_activation.RemoveFromCache;

            /**
             * Encodes the specified RemoveFromCache message. Does not implicitly {@link coresdk.workflow_activation.RemoveFromCache.verify|verify} messages.
             * @param message RemoveFromCache message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_activation.IRemoveFromCache, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified RemoveFromCache message, length delimited. Does not implicitly {@link coresdk.workflow_activation.RemoveFromCache.verify|verify} messages.
             * @param message RemoveFromCache message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_activation.IRemoveFromCache, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a RemoveFromCache message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns RemoveFromCache
             * @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): coresdk.workflow_activation.RemoveFromCache;

            /**
             * Decodes a RemoveFromCache message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns RemoveFromCache
             * @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)): coresdk.workflow_activation.RemoveFromCache;

            /**
             * Creates a RemoveFromCache message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns RemoveFromCache
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_activation.RemoveFromCache;

            /**
             * Creates a plain object from a RemoveFromCache message. Also converts values to other types if specified.
             * @param message RemoveFromCache
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_activation.RemoveFromCache, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this RemoveFromCache to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for RemoveFromCache
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace RemoveFromCache {

            /** EvictionReason enum. */
            enum EvictionReason {
                UNSPECIFIED = 0,
                CACHE_FULL = 1,
                CACHE_MISS = 2,
                NONDETERMINISM = 3,
                LANG_FAIL = 4,
                LANG_REQUESTED = 5,
                TASK_NOT_FOUND = 6,
                UNHANDLED_COMMAND = 7,
                FATAL = 8,
                PAGINATION_OR_HISTORY_FETCH = 9,
                WORKFLOW_EXECUTION_ENDING = 10
            }
        }
    }

    /** Namespace child_workflow. */
    namespace child_workflow {

        /** Properties of a ChildWorkflowResult. */
        interface IChildWorkflowResult {

            /** ChildWorkflowResult completed */
            completed?: (coresdk.child_workflow.ISuccess|null);

            /** ChildWorkflowResult failed */
            failed?: (coresdk.child_workflow.IFailure|null);

            /** ChildWorkflowResult cancelled */
            cancelled?: (coresdk.child_workflow.ICancellation|null);
        }

        /** Used by core to resolve child workflow executions. */
        class ChildWorkflowResult implements IChildWorkflowResult {

            /**
             * Constructs a new ChildWorkflowResult.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.child_workflow.IChildWorkflowResult);

            /** ChildWorkflowResult completed. */
            public completed?: (coresdk.child_workflow.ISuccess|null);

            /** ChildWorkflowResult failed. */
            public failed?: (coresdk.child_workflow.IFailure|null);

            /** ChildWorkflowResult cancelled. */
            public cancelled?: (coresdk.child_workflow.ICancellation|null);

            /** ChildWorkflowResult status. */
            public status?: ("completed"|"failed"|"cancelled");

            /**
             * Creates a new ChildWorkflowResult instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ChildWorkflowResult instance
             */
            public static create(properties?: coresdk.child_workflow.IChildWorkflowResult): coresdk.child_workflow.ChildWorkflowResult;

            /**
             * Encodes the specified ChildWorkflowResult message. Does not implicitly {@link coresdk.child_workflow.ChildWorkflowResult.verify|verify} messages.
             * @param message ChildWorkflowResult message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.child_workflow.IChildWorkflowResult, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ChildWorkflowResult message, length delimited. Does not implicitly {@link coresdk.child_workflow.ChildWorkflowResult.verify|verify} messages.
             * @param message ChildWorkflowResult message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.child_workflow.IChildWorkflowResult, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ChildWorkflowResult message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ChildWorkflowResult
             * @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): coresdk.child_workflow.ChildWorkflowResult;

            /**
             * Decodes a ChildWorkflowResult message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ChildWorkflowResult
             * @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)): coresdk.child_workflow.ChildWorkflowResult;

            /**
             * Creates a ChildWorkflowResult message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ChildWorkflowResult
             */
            public static fromObject(object: { [k: string]: any }): coresdk.child_workflow.ChildWorkflowResult;

            /**
             * Creates a plain object from a ChildWorkflowResult message. Also converts values to other types if specified.
             * @param message ChildWorkflowResult
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.child_workflow.ChildWorkflowResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ChildWorkflowResult to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ChildWorkflowResult
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Success. */
        interface ISuccess {

            /** Success result */
            result?: (temporal.api.common.v1.IPayload|null);
        }

        /** Used in ChildWorkflowResult to report successful completion. */
        class Success implements ISuccess {

            /**
             * Constructs a new Success.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.child_workflow.ISuccess);

            /** Success result. */
            public result?: (temporal.api.common.v1.IPayload|null);

            /**
             * Creates a new Success instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Success instance
             */
            public static create(properties?: coresdk.child_workflow.ISuccess): coresdk.child_workflow.Success;

            /**
             * Encodes the specified Success message. Does not implicitly {@link coresdk.child_workflow.Success.verify|verify} messages.
             * @param message Success message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.child_workflow.ISuccess, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Success message, length delimited. Does not implicitly {@link coresdk.child_workflow.Success.verify|verify} messages.
             * @param message Success message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.child_workflow.ISuccess, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Success message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Success
             * @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): coresdk.child_workflow.Success;

            /**
             * Decodes a Success message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Success
             * @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)): coresdk.child_workflow.Success;

            /**
             * Creates a Success message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Success
             */
            public static fromObject(object: { [k: string]: any }): coresdk.child_workflow.Success;

            /**
             * Creates a plain object from a Success message. Also converts values to other types if specified.
             * @param message Success
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.child_workflow.Success, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Success to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Success
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Failure. */
        interface IFailure {

            /** Failure failure */
            failure?: (temporal.api.failure.v1.IFailure|null);
        }

        /**
         * Used in ChildWorkflowResult to report non successful outcomes such as
         * application failures, timeouts, terminations, and cancellations.
         */
        class Failure implements IFailure {

            /**
             * Constructs a new Failure.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.child_workflow.IFailure);

            /** Failure failure. */
            public failure?: (temporal.api.failure.v1.IFailure|null);

            /**
             * Creates a new Failure instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Failure instance
             */
            public static create(properties?: coresdk.child_workflow.IFailure): coresdk.child_workflow.Failure;

            /**
             * Encodes the specified Failure message. Does not implicitly {@link coresdk.child_workflow.Failure.verify|verify} messages.
             * @param message Failure message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.child_workflow.IFailure, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Failure message, length delimited. Does not implicitly {@link coresdk.child_workflow.Failure.verify|verify} messages.
             * @param message Failure message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.child_workflow.IFailure, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Failure message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Failure
             * @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): coresdk.child_workflow.Failure;

            /**
             * Decodes a Failure message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Failure
             * @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)): coresdk.child_workflow.Failure;

            /**
             * Creates a Failure message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Failure
             */
            public static fromObject(object: { [k: string]: any }): coresdk.child_workflow.Failure;

            /**
             * Creates a plain object from a Failure message. Also converts values to other types if specified.
             * @param message Failure
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.child_workflow.Failure, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Failure to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Failure
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Cancellation. */
        interface ICancellation {

            /** Cancellation failure */
            failure?: (temporal.api.failure.v1.IFailure|null);
        }

        /**
         * Used in ChildWorkflowResult to report cancellation.
         * Failure should be ChildWorkflowFailure with a CanceledFailure cause.
         */
        class Cancellation implements ICancellation {

            /**
             * Constructs a new Cancellation.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.child_workflow.ICancellation);

            /** Cancellation failure. */
            public failure?: (temporal.api.failure.v1.IFailure|null);

            /**
             * Creates a new Cancellation instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Cancellation instance
             */
            public static create(properties?: coresdk.child_workflow.ICancellation): coresdk.child_workflow.Cancellation;

            /**
             * Encodes the specified Cancellation message. Does not implicitly {@link coresdk.child_workflow.Cancellation.verify|verify} messages.
             * @param message Cancellation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.child_workflow.ICancellation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Cancellation message, length delimited. Does not implicitly {@link coresdk.child_workflow.Cancellation.verify|verify} messages.
             * @param message Cancellation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.child_workflow.ICancellation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Cancellation message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Cancellation
             * @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): coresdk.child_workflow.Cancellation;

            /**
             * Decodes a Cancellation message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Cancellation
             * @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)): coresdk.child_workflow.Cancellation;

            /**
             * Creates a Cancellation message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Cancellation
             */
            public static fromObject(object: { [k: string]: any }): coresdk.child_workflow.Cancellation;

            /**
             * Creates a plain object from a Cancellation message. Also converts values to other types if specified.
             * @param message Cancellation
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.child_workflow.Cancellation, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Cancellation to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Cancellation
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /**
         * Used by the service to determine the fate of a child workflow
         * in case its parent is closed.
         */
        enum ParentClosePolicy {
            PARENT_CLOSE_POLICY_UNSPECIFIED = 0,
            PARENT_CLOSE_POLICY_TERMINATE = 1,
            PARENT_CLOSE_POLICY_ABANDON = 2,
            PARENT_CLOSE_POLICY_REQUEST_CANCEL = 3
        }

        /** Possible causes of failure to start a child workflow */
        enum StartChildWorkflowExecutionFailedCause {
            START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_UNSPECIFIED = 0,
            START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_EXISTS = 1
        }

        /** Controls at which point to report back to lang when a child workflow is cancelled */
        enum ChildWorkflowCancellationType {
            ABANDON = 0,
            TRY_CANCEL = 1,
            WAIT_CANCELLATION_COMPLETED = 2,
            WAIT_CANCELLATION_REQUESTED = 3
        }
    }

    /** Namespace nexus. */
    namespace nexus {

        /** Properties of a NexusOperationResult. */
        interface INexusOperationResult {

            /** NexusOperationResult completed */
            completed?: (temporal.api.common.v1.IPayload|null);

            /** NexusOperationResult failed */
            failed?: (temporal.api.failure.v1.IFailure|null);

            /** NexusOperationResult cancelled */
            cancelled?: (temporal.api.failure.v1.IFailure|null);

            /** NexusOperationResult timedOut */
            timedOut?: (temporal.api.failure.v1.IFailure|null);
        }

        /** Used by core to resolve nexus operations. */
        class NexusOperationResult implements INexusOperationResult {

            /**
             * Constructs a new NexusOperationResult.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.nexus.INexusOperationResult);

            /** NexusOperationResult completed. */
            public completed?: (temporal.api.common.v1.IPayload|null);

            /** NexusOperationResult failed. */
            public failed?: (temporal.api.failure.v1.IFailure|null);

            /** NexusOperationResult cancelled. */
            public cancelled?: (temporal.api.failure.v1.IFailure|null);

            /** NexusOperationResult timedOut. */
            public timedOut?: (temporal.api.failure.v1.IFailure|null);

            /** NexusOperationResult status. */
            public status?: ("completed"|"failed"|"cancelled"|"timedOut");

            /**
             * Creates a new NexusOperationResult instance using the specified properties.
             * @param [properties] Properties to set
             * @returns NexusOperationResult instance
             */
            public static create(properties?: coresdk.nexus.INexusOperationResult): coresdk.nexus.NexusOperationResult;

            /**
             * Encodes the specified NexusOperationResult message. Does not implicitly {@link coresdk.nexus.NexusOperationResult.verify|verify} messages.
             * @param message NexusOperationResult message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.nexus.INexusOperationResult, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified NexusOperationResult message, length delimited. Does not implicitly {@link coresdk.nexus.NexusOperationResult.verify|verify} messages.
             * @param message NexusOperationResult message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.nexus.INexusOperationResult, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a NexusOperationResult message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns NexusOperationResult
             * @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): coresdk.nexus.NexusOperationResult;

            /**
             * Decodes a NexusOperationResult message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns NexusOperationResult
             * @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)): coresdk.nexus.NexusOperationResult;

            /**
             * Creates a NexusOperationResult message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns NexusOperationResult
             */
            public static fromObject(object: { [k: string]: any }): coresdk.nexus.NexusOperationResult;

            /**
             * Creates a plain object from a NexusOperationResult message. Also converts values to other types if specified.
             * @param message NexusOperationResult
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.nexus.NexusOperationResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this NexusOperationResult to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for NexusOperationResult
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a NexusTaskCompletion. */
        interface INexusTaskCompletion {

            /** The unique identifier for this task provided in the poll response */
            taskToken?: (Uint8Array|null);

            /**
             * The handler completed (successfully or not). Note that the response kind must match the
             * request kind (start or cancel).
             */
            completed?: (temporal.api.nexus.v1.IResponse|null);

            /** The handler could not complete the request for some reason. Deprecated, use failure. */
            error?: (temporal.api.nexus.v1.IHandlerError|null);

            /**
             * The lang SDK acknowledges that it is responding to a `CancelNexusTask` and thus the
             * response is irrelevant. This is not the only way to respond to a cancel, the other
             * variants can still be used, but this variant should be used when the handler was aborted
             * by cancellation.
             */
            ackCancel?: (boolean|null);

            /** The handler could not complete the request for some reason. */
            failure?: (temporal.api.failure.v1.IFailure|null);
        }

        /** A response to a Nexus task */
        class NexusTaskCompletion implements INexusTaskCompletion {

            /**
             * Constructs a new NexusTaskCompletion.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.nexus.INexusTaskCompletion);

            /** The unique identifier for this task provided in the poll response */
            public taskToken: Uint8Array;

            /**
             * The handler completed (successfully or not). Note that the response kind must match the
             * request kind (start or cancel).
             */
            public completed?: (temporal.api.nexus.v1.IResponse|null);

            /** The handler could not complete the request for some reason. Deprecated, use failure. */
            public error?: (temporal.api.nexus.v1.IHandlerError|null);

            /**
             * The lang SDK acknowledges that it is responding to a `CancelNexusTask` and thus the
             * response is irrelevant. This is not the only way to respond to a cancel, the other
             * variants can still be used, but this variant should be used when the handler was aborted
             * by cancellation.
             */
            public ackCancel?: (boolean|null);

            /** The handler could not complete the request for some reason. */
            public failure?: (temporal.api.failure.v1.IFailure|null);

            /** NexusTaskCompletion status. */
            public status?: ("completed"|"error"|"ackCancel"|"failure");

            /**
             * Creates a new NexusTaskCompletion instance using the specified properties.
             * @param [properties] Properties to set
             * @returns NexusTaskCompletion instance
             */
            public static create(properties?: coresdk.nexus.INexusTaskCompletion): coresdk.nexus.NexusTaskCompletion;

            /**
             * Encodes the specified NexusTaskCompletion message. Does not implicitly {@link coresdk.nexus.NexusTaskCompletion.verify|verify} messages.
             * @param message NexusTaskCompletion message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.nexus.INexusTaskCompletion, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified NexusTaskCompletion message, length delimited. Does not implicitly {@link coresdk.nexus.NexusTaskCompletion.verify|verify} messages.
             * @param message NexusTaskCompletion message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.nexus.INexusTaskCompletion, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a NexusTaskCompletion message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns NexusTaskCompletion
             * @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): coresdk.nexus.NexusTaskCompletion;

            /**
             * Decodes a NexusTaskCompletion message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns NexusTaskCompletion
             * @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)): coresdk.nexus.NexusTaskCompletion;

            /**
             * Creates a NexusTaskCompletion message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns NexusTaskCompletion
             */
            public static fromObject(object: { [k: string]: any }): coresdk.nexus.NexusTaskCompletion;

            /**
             * Creates a plain object from a NexusTaskCompletion message. Also converts values to other types if specified.
             * @param message NexusTaskCompletion
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.nexus.NexusTaskCompletion, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this NexusTaskCompletion to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for NexusTaskCompletion
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a NexusTask. */
        interface INexusTask {

            /** A nexus task from server */
            task?: (temporal.api.workflowservice.v1.IPollNexusTaskQueueResponse|null);

            /**
             * A request by Core to notify an in-progress operation handler that it should cancel. This
             * is distinct from a `CancelOperationRequest` from the server, which results from the user
             * requesting the cancellation of an operation. Handling this variant should result in
             * something like cancelling a cancellation token given to the user's operation handler.
             *
             * These do not count as a separate task for the purposes of completing all issued tasks,
             * but rather count as a sort of modification to the already-issued task which is being
             * cancelled.
             *
             * EX: Core knows the nexus operation has timed out, and it does not make sense for the
             * user's operation handler to continue doing work.
             */
            cancelTask?: (coresdk.nexus.ICancelNexusTask|null);

            /**
             * The deadline for this request, parsed from the "Request-Timeout" header.
             * Only set when variant is `task` and the header was present with a valid value.
             * Represented as an absolute timestamp.
             */
            requestDeadline?: (google.protobuf.ITimestamp|null);
        }

        /** Represents a NexusTask. */
        class NexusTask implements INexusTask {

            /**
             * Constructs a new NexusTask.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.nexus.INexusTask);

            /** A nexus task from server */
            public task?: (temporal.api.workflowservice.v1.IPollNexusTaskQueueResponse|null);

            /**
             * A request by Core to notify an in-progress operation handler that it should cancel. This
             * is distinct from a `CancelOperationRequest` from the server, which results from the user
             * requesting the cancellation of an operation. Handling this variant should result in
             * something like cancelling a cancellation token given to the user's operation handler.
             *
             * These do not count as a separate task for the purposes of completing all issued tasks,
             * but rather count as a sort of modification to the already-issued task which is being
             * cancelled.
             *
             * EX: Core knows the nexus operation has timed out, and it does not make sense for the
             * user's operation handler to continue doing work.
             */
            public cancelTask?: (coresdk.nexus.ICancelNexusTask|null);

            /**
             * The deadline for this request, parsed from the "Request-Timeout" header.
             * Only set when variant is `task` and the header was present with a valid value.
             * Represented as an absolute timestamp.
             */
            public requestDeadline?: (google.protobuf.ITimestamp|null);

            /** NexusTask variant. */
            public variant?: ("task"|"cancelTask");

            /**
             * Creates a new NexusTask instance using the specified properties.
             * @param [properties] Properties to set
             * @returns NexusTask instance
             */
            public static create(properties?: coresdk.nexus.INexusTask): coresdk.nexus.NexusTask;

            /**
             * Encodes the specified NexusTask message. Does not implicitly {@link coresdk.nexus.NexusTask.verify|verify} messages.
             * @param message NexusTask message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.nexus.INexusTask, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified NexusTask message, length delimited. Does not implicitly {@link coresdk.nexus.NexusTask.verify|verify} messages.
             * @param message NexusTask message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.nexus.INexusTask, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a NexusTask message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns NexusTask
             * @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): coresdk.nexus.NexusTask;

            /**
             * Decodes a NexusTask message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns NexusTask
             * @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)): coresdk.nexus.NexusTask;

            /**
             * Creates a NexusTask message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns NexusTask
             */
            public static fromObject(object: { [k: string]: any }): coresdk.nexus.NexusTask;

            /**
             * Creates a plain object from a NexusTask message. Also converts values to other types if specified.
             * @param message NexusTask
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.nexus.NexusTask, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this NexusTask to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for NexusTask
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CancelNexusTask. */
        interface ICancelNexusTask {

            /** The task token from the PollNexusTaskQueueResponse */
            taskToken?: (Uint8Array|null);

            /** Why Core is asking for this operation to be cancelled */
            reason?: (coresdk.nexus.NexusTaskCancelReason|null);
        }

        /** Represents a CancelNexusTask. */
        class CancelNexusTask implements ICancelNexusTask {

            /**
             * Constructs a new CancelNexusTask.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.nexus.ICancelNexusTask);

            /** The task token from the PollNexusTaskQueueResponse */
            public taskToken: Uint8Array;

            /** Why Core is asking for this operation to be cancelled */
            public reason: coresdk.nexus.NexusTaskCancelReason;

            /**
             * Creates a new CancelNexusTask instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CancelNexusTask instance
             */
            public static create(properties?: coresdk.nexus.ICancelNexusTask): coresdk.nexus.CancelNexusTask;

            /**
             * Encodes the specified CancelNexusTask message. Does not implicitly {@link coresdk.nexus.CancelNexusTask.verify|verify} messages.
             * @param message CancelNexusTask message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.nexus.ICancelNexusTask, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CancelNexusTask message, length delimited. Does not implicitly {@link coresdk.nexus.CancelNexusTask.verify|verify} messages.
             * @param message CancelNexusTask message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.nexus.ICancelNexusTask, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CancelNexusTask message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CancelNexusTask
             * @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): coresdk.nexus.CancelNexusTask;

            /**
             * Decodes a CancelNexusTask message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CancelNexusTask
             * @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)): coresdk.nexus.CancelNexusTask;

            /**
             * Creates a CancelNexusTask message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CancelNexusTask
             */
            public static fromObject(object: { [k: string]: any }): coresdk.nexus.CancelNexusTask;

            /**
             * Creates a plain object from a CancelNexusTask message. Also converts values to other types if specified.
             * @param message CancelNexusTask
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.nexus.CancelNexusTask, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CancelNexusTask to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CancelNexusTask
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** NexusTaskCancelReason enum. */
        enum NexusTaskCancelReason {
            TIMED_OUT = 0,
            WORKER_SHUTDOWN = 1
        }

        /** Controls at which point to report back to lang when a nexus operation is cancelled */
        enum NexusOperationCancellationType {
            WAIT_CANCELLATION_COMPLETED = 0,
            ABANDON = 1,
            TRY_CANCEL = 2,
            WAIT_CANCELLATION_REQUESTED = 3
        }
    }

    /** Namespace workflow_commands. */
    namespace workflow_commands {

        /** Properties of a WorkflowCommand. */
        interface IWorkflowCommand {

            /**
             * User metadata that may or may not be persisted into history depending on the command type.
             * Lang layers are expected to expose the setting of the internals of this metadata on a
             * per-command basis where applicable.
             */
            userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

            /** WorkflowCommand startTimer */
            startTimer?: (coresdk.workflow_commands.IStartTimer|null);

            /** WorkflowCommand scheduleActivity */
            scheduleActivity?: (coresdk.workflow_commands.IScheduleActivity|null);

            /** WorkflowCommand respondToQuery */
            respondToQuery?: (coresdk.workflow_commands.IQueryResult|null);

            /** WorkflowCommand requestCancelActivity */
            requestCancelActivity?: (coresdk.workflow_commands.IRequestCancelActivity|null);

            /** WorkflowCommand cancelTimer */
            cancelTimer?: (coresdk.workflow_commands.ICancelTimer|null);

            /** WorkflowCommand completeWorkflowExecution */
            completeWorkflowExecution?: (coresdk.workflow_commands.ICompleteWorkflowExecution|null);

            /** WorkflowCommand failWorkflowExecution */
            failWorkflowExecution?: (coresdk.workflow_commands.IFailWorkflowExecution|null);

            /** WorkflowCommand continueAsNewWorkflowExecution */
            continueAsNewWorkflowExecution?: (coresdk.workflow_commands.IContinueAsNewWorkflowExecution|null);

            /** WorkflowCommand cancelWorkflowExecution */
            cancelWorkflowExecution?: (coresdk.workflow_commands.ICancelWorkflowExecution|null);

            /** WorkflowCommand setPatchMarker */
            setPatchMarker?: (coresdk.workflow_commands.ISetPatchMarker|null);

            /** WorkflowCommand startChildWorkflowExecution */
            startChildWorkflowExecution?: (coresdk.workflow_commands.IStartChildWorkflowExecution|null);

            /** WorkflowCommand cancelChildWorkflowExecution */
            cancelChildWorkflowExecution?: (coresdk.workflow_commands.ICancelChildWorkflowExecution|null);

            /** WorkflowCommand requestCancelExternalWorkflowExecution */
            requestCancelExternalWorkflowExecution?: (coresdk.workflow_commands.IRequestCancelExternalWorkflowExecution|null);

            /** WorkflowCommand signalExternalWorkflowExecution */
            signalExternalWorkflowExecution?: (coresdk.workflow_commands.ISignalExternalWorkflowExecution|null);

            /** WorkflowCommand cancelSignalWorkflow */
            cancelSignalWorkflow?: (coresdk.workflow_commands.ICancelSignalWorkflow|null);

            /** WorkflowCommand scheduleLocalActivity */
            scheduleLocalActivity?: (coresdk.workflow_commands.IScheduleLocalActivity|null);

            /** WorkflowCommand requestCancelLocalActivity */
            requestCancelLocalActivity?: (coresdk.workflow_commands.IRequestCancelLocalActivity|null);

            /** WorkflowCommand upsertWorkflowSearchAttributes */
            upsertWorkflowSearchAttributes?: (coresdk.workflow_commands.IUpsertWorkflowSearchAttributes|null);

            /** WorkflowCommand modifyWorkflowProperties */
            modifyWorkflowProperties?: (coresdk.workflow_commands.IModifyWorkflowProperties|null);

            /** WorkflowCommand updateResponse */
            updateResponse?: (coresdk.workflow_commands.IUpdateResponse|null);

            /** WorkflowCommand scheduleNexusOperation */
            scheduleNexusOperation?: (coresdk.workflow_commands.IScheduleNexusOperation|null);

            /** WorkflowCommand requestCancelNexusOperation */
            requestCancelNexusOperation?: (coresdk.workflow_commands.IRequestCancelNexusOperation|null);
        }

        /** Represents a WorkflowCommand. */
        class WorkflowCommand implements IWorkflowCommand {

            /**
             * Constructs a new WorkflowCommand.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IWorkflowCommand);

            /**
             * User metadata that may or may not be persisted into history depending on the command type.
             * Lang layers are expected to expose the setting of the internals of this metadata on a
             * per-command basis where applicable.
             */
            public userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

            /** WorkflowCommand startTimer. */
            public startTimer?: (coresdk.workflow_commands.IStartTimer|null);

            /** WorkflowCommand scheduleActivity. */
            public scheduleActivity?: (coresdk.workflow_commands.IScheduleActivity|null);

            /** WorkflowCommand respondToQuery. */
            public respondToQuery?: (coresdk.workflow_commands.IQueryResult|null);

            /** WorkflowCommand requestCancelActivity. */
            public requestCancelActivity?: (coresdk.workflow_commands.IRequestCancelActivity|null);

            /** WorkflowCommand cancelTimer. */
            public cancelTimer?: (coresdk.workflow_commands.ICancelTimer|null);

            /** WorkflowCommand completeWorkflowExecution. */
            public completeWorkflowExecution?: (coresdk.workflow_commands.ICompleteWorkflowExecution|null);

            /** WorkflowCommand failWorkflowExecution. */
            public failWorkflowExecution?: (coresdk.workflow_commands.IFailWorkflowExecution|null);

            /** WorkflowCommand continueAsNewWorkflowExecution. */
            public continueAsNewWorkflowExecution?: (coresdk.workflow_commands.IContinueAsNewWorkflowExecution|null);

            /** WorkflowCommand cancelWorkflowExecution. */
            public cancelWorkflowExecution?: (coresdk.workflow_commands.ICancelWorkflowExecution|null);

            /** WorkflowCommand setPatchMarker. */
            public setPatchMarker?: (coresdk.workflow_commands.ISetPatchMarker|null);

            /** WorkflowCommand startChildWorkflowExecution. */
            public startChildWorkflowExecution?: (coresdk.workflow_commands.IStartChildWorkflowExecution|null);

            /** WorkflowCommand cancelChildWorkflowExecution. */
            public cancelChildWorkflowExecution?: (coresdk.workflow_commands.ICancelChildWorkflowExecution|null);

            /** WorkflowCommand requestCancelExternalWorkflowExecution. */
            public requestCancelExternalWorkflowExecution?: (coresdk.workflow_commands.IRequestCancelExternalWorkflowExecution|null);

            /** WorkflowCommand signalExternalWorkflowExecution. */
            public signalExternalWorkflowExecution?: (coresdk.workflow_commands.ISignalExternalWorkflowExecution|null);

            /** WorkflowCommand cancelSignalWorkflow. */
            public cancelSignalWorkflow?: (coresdk.workflow_commands.ICancelSignalWorkflow|null);

            /** WorkflowCommand scheduleLocalActivity. */
            public scheduleLocalActivity?: (coresdk.workflow_commands.IScheduleLocalActivity|null);

            /** WorkflowCommand requestCancelLocalActivity. */
            public requestCancelLocalActivity?: (coresdk.workflow_commands.IRequestCancelLocalActivity|null);

            /** WorkflowCommand upsertWorkflowSearchAttributes. */
            public upsertWorkflowSearchAttributes?: (coresdk.workflow_commands.IUpsertWorkflowSearchAttributes|null);

            /** WorkflowCommand modifyWorkflowProperties. */
            public modifyWorkflowProperties?: (coresdk.workflow_commands.IModifyWorkflowProperties|null);

            /** WorkflowCommand updateResponse. */
            public updateResponse?: (coresdk.workflow_commands.IUpdateResponse|null);

            /** WorkflowCommand scheduleNexusOperation. */
            public scheduleNexusOperation?: (coresdk.workflow_commands.IScheduleNexusOperation|null);

            /** WorkflowCommand requestCancelNexusOperation. */
            public requestCancelNexusOperation?: (coresdk.workflow_commands.IRequestCancelNexusOperation|null);

            /** WorkflowCommand variant. */
            public variant?: ("startTimer"|"scheduleActivity"|"respondToQuery"|"requestCancelActivity"|"cancelTimer"|"completeWorkflowExecution"|"failWorkflowExecution"|"continueAsNewWorkflowExecution"|"cancelWorkflowExecution"|"setPatchMarker"|"startChildWorkflowExecution"|"cancelChildWorkflowExecution"|"requestCancelExternalWorkflowExecution"|"signalExternalWorkflowExecution"|"cancelSignalWorkflow"|"scheduleLocalActivity"|"requestCancelLocalActivity"|"upsertWorkflowSearchAttributes"|"modifyWorkflowProperties"|"updateResponse"|"scheduleNexusOperation"|"requestCancelNexusOperation");

            /**
             * Creates a new WorkflowCommand instance using the specified properties.
             * @param [properties] Properties to set
             * @returns WorkflowCommand instance
             */
            public static create(properties?: coresdk.workflow_commands.IWorkflowCommand): coresdk.workflow_commands.WorkflowCommand;

            /**
             * Encodes the specified WorkflowCommand message. Does not implicitly {@link coresdk.workflow_commands.WorkflowCommand.verify|verify} messages.
             * @param message WorkflowCommand message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IWorkflowCommand, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified WorkflowCommand message, length delimited. Does not implicitly {@link coresdk.workflow_commands.WorkflowCommand.verify|verify} messages.
             * @param message WorkflowCommand message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IWorkflowCommand, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a WorkflowCommand message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns WorkflowCommand
             * @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): coresdk.workflow_commands.WorkflowCommand;

            /**
             * Decodes a WorkflowCommand message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns WorkflowCommand
             * @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)): coresdk.workflow_commands.WorkflowCommand;

            /**
             * Creates a WorkflowCommand message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns WorkflowCommand
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.WorkflowCommand;

            /**
             * Creates a plain object from a WorkflowCommand message. Also converts values to other types if specified.
             * @param message WorkflowCommand
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.WorkflowCommand, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this WorkflowCommand to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for WorkflowCommand
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a StartTimer. */
        interface IStartTimer {

            /** Lang's incremental sequence number, used as the operation identifier */
            seq?: (number|null);

            /** StartTimer startToFireTimeout */
            startToFireTimeout?: (google.protobuf.IDuration|null);
        }

        /** Represents a StartTimer. */
        class StartTimer implements IStartTimer {

            /**
             * Constructs a new StartTimer.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IStartTimer);

            /** Lang's incremental sequence number, used as the operation identifier */
            public seq: number;

            /** StartTimer startToFireTimeout. */
            public startToFireTimeout?: (google.protobuf.IDuration|null);

            /**
             * Creates a new StartTimer instance using the specified properties.
             * @param [properties] Properties to set
             * @returns StartTimer instance
             */
            public static create(properties?: coresdk.workflow_commands.IStartTimer): coresdk.workflow_commands.StartTimer;

            /**
             * Encodes the specified StartTimer message. Does not implicitly {@link coresdk.workflow_commands.StartTimer.verify|verify} messages.
             * @param message StartTimer message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IStartTimer, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified StartTimer message, length delimited. Does not implicitly {@link coresdk.workflow_commands.StartTimer.verify|verify} messages.
             * @param message StartTimer message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IStartTimer, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a StartTimer message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns StartTimer
             * @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): coresdk.workflow_commands.StartTimer;

            /**
             * Decodes a StartTimer message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns StartTimer
             * @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)): coresdk.workflow_commands.StartTimer;

            /**
             * Creates a StartTimer message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns StartTimer
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.StartTimer;

            /**
             * Creates a plain object from a StartTimer message. Also converts values to other types if specified.
             * @param message StartTimer
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.StartTimer, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this StartTimer to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for StartTimer
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CancelTimer. */
        interface ICancelTimer {

            /** Lang's incremental sequence number as passed to `StartTimer` */
            seq?: (number|null);
        }

        /** Represents a CancelTimer. */
        class CancelTimer implements ICancelTimer {

            /**
             * Constructs a new CancelTimer.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.ICancelTimer);

            /** Lang's incremental sequence number as passed to `StartTimer` */
            public seq: number;

            /**
             * Creates a new CancelTimer instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CancelTimer instance
             */
            public static create(properties?: coresdk.workflow_commands.ICancelTimer): coresdk.workflow_commands.CancelTimer;

            /**
             * Encodes the specified CancelTimer message. Does not implicitly {@link coresdk.workflow_commands.CancelTimer.verify|verify} messages.
             * @param message CancelTimer message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.ICancelTimer, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CancelTimer message, length delimited. Does not implicitly {@link coresdk.workflow_commands.CancelTimer.verify|verify} messages.
             * @param message CancelTimer message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.ICancelTimer, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CancelTimer message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CancelTimer
             * @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): coresdk.workflow_commands.CancelTimer;

            /**
             * Decodes a CancelTimer message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CancelTimer
             * @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)): coresdk.workflow_commands.CancelTimer;

            /**
             * Creates a CancelTimer message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CancelTimer
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.CancelTimer;

            /**
             * Creates a plain object from a CancelTimer message. Also converts values to other types if specified.
             * @param message CancelTimer
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.CancelTimer, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CancelTimer to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CancelTimer
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ScheduleActivity. */
        interface IScheduleActivity {

            /** Lang's incremental sequence number, used as the operation identifier */
            seq?: (number|null);

            /** ScheduleActivity activityId */
            activityId?: (string|null);

            /** ScheduleActivity activityType */
            activityType?: (string|null);

            /** The name of the task queue to place this activity request in */
            taskQueue?: (string|null);

            /** ScheduleActivity headers */
            headers?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

            /** Arguments/input to the activity. Called "input" upstream. */
            "arguments"?: (temporal.api.common.v1.IPayload[]|null);

            /**
             * Indicates how long the caller is willing to wait for an activity completion. Limits how long
             * retries will be attempted. Either this or start_to_close_timeout_seconds must be specified.
             * When not specified defaults to the workflow execution timeout.
             */
            scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

            /**
             * Limits time an activity task can stay in a task queue before a worker picks it up. This
             * timeout is always non retryable as all a retry would achieve is to put it back into the same
             * queue. Defaults to schedule_to_close_timeout or workflow execution timeout if not specified.
             */
            scheduleToStartTimeout?: (google.protobuf.IDuration|null);

            /**
             * Maximum time an activity is allowed to execute after a pick up by a worker. This timeout is
             * always retryable. Either this or schedule_to_close_timeout must be specified.
             */
            startToCloseTimeout?: (google.protobuf.IDuration|null);

            /** Maximum time allowed between successful worker heartbeats. */
            heartbeatTimeout?: (google.protobuf.IDuration|null);

            /**
             * Activities are provided by a default retry policy controlled through the service dynamic
             * configuration. Retries are happening up to schedule_to_close_timeout. To disable retries set
             * retry_policy.maximum_attempts to 1.
             */
            retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /** Defines how the workflow will wait (or not) for cancellation of the activity to be confirmed */
            cancellationType?: (coresdk.workflow_commands.ActivityCancellationType|null);

            /**
             * If set, the worker will not tell the service that it can immediately start executing this
             * activity. When unset/default, workers will always attempt to do so if activity execution
             * slots are available.
             */
            doNotEagerlyExecute?: (boolean|null);

            /** Whether this activity should run on a worker with a compatible build id or not. */
            versioningIntent?: (coresdk.common.VersioningIntent|null);

            /** The Priority to use for this activity */
            priority?: (temporal.api.common.v1.IPriority|null);
        }

        /** Represents a ScheduleActivity. */
        class ScheduleActivity implements IScheduleActivity {

            /**
             * Constructs a new ScheduleActivity.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IScheduleActivity);

            /** Lang's incremental sequence number, used as the operation identifier */
            public seq: number;

            /** ScheduleActivity activityId. */
            public activityId: string;

            /** ScheduleActivity activityType. */
            public activityType: string;

            /** The name of the task queue to place this activity request in */
            public taskQueue: string;

            /** ScheduleActivity headers. */
            public headers: { [k: string]: temporal.api.common.v1.IPayload };

            /** Arguments/input to the activity. Called "input" upstream. */
            public arguments: temporal.api.common.v1.IPayload[];

            /**
             * Indicates how long the caller is willing to wait for an activity completion. Limits how long
             * retries will be attempted. Either this or start_to_close_timeout_seconds must be specified.
             * When not specified defaults to the workflow execution timeout.
             */
            public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

            /**
             * Limits time an activity task can stay in a task queue before a worker picks it up. This
             * timeout is always non retryable as all a retry would achieve is to put it back into the same
             * queue. Defaults to schedule_to_close_timeout or workflow execution timeout if not specified.
             */
            public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

            /**
             * Maximum time an activity is allowed to execute after a pick up by a worker. This timeout is
             * always retryable. Either this or schedule_to_close_timeout must be specified.
             */
            public startToCloseTimeout?: (google.protobuf.IDuration|null);

            /** Maximum time allowed between successful worker heartbeats. */
            public heartbeatTimeout?: (google.protobuf.IDuration|null);

            /**
             * Activities are provided by a default retry policy controlled through the service dynamic
             * configuration. Retries are happening up to schedule_to_close_timeout. To disable retries set
             * retry_policy.maximum_attempts to 1.
             */
            public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /** Defines how the workflow will wait (or not) for cancellation of the activity to be confirmed */
            public cancellationType: coresdk.workflow_commands.ActivityCancellationType;

            /**
             * If set, the worker will not tell the service that it can immediately start executing this
             * activity. When unset/default, workers will always attempt to do so if activity execution
             * slots are available.
             */
            public doNotEagerlyExecute: boolean;

            /** Whether this activity should run on a worker with a compatible build id or not. */
            public versioningIntent: coresdk.common.VersioningIntent;

            /** The Priority to use for this activity */
            public priority?: (temporal.api.common.v1.IPriority|null);

            /**
             * Creates a new ScheduleActivity instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ScheduleActivity instance
             */
            public static create(properties?: coresdk.workflow_commands.IScheduleActivity): coresdk.workflow_commands.ScheduleActivity;

            /**
             * Encodes the specified ScheduleActivity message. Does not implicitly {@link coresdk.workflow_commands.ScheduleActivity.verify|verify} messages.
             * @param message ScheduleActivity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IScheduleActivity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ScheduleActivity message, length delimited. Does not implicitly {@link coresdk.workflow_commands.ScheduleActivity.verify|verify} messages.
             * @param message ScheduleActivity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IScheduleActivity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ScheduleActivity message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ScheduleActivity
             * @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): coresdk.workflow_commands.ScheduleActivity;

            /**
             * Decodes a ScheduleActivity message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ScheduleActivity
             * @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)): coresdk.workflow_commands.ScheduleActivity;

            /**
             * Creates a ScheduleActivity message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ScheduleActivity
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.ScheduleActivity;

            /**
             * Creates a plain object from a ScheduleActivity message. Also converts values to other types if specified.
             * @param message ScheduleActivity
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.ScheduleActivity, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ScheduleActivity to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ScheduleActivity
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ScheduleLocalActivity. */
        interface IScheduleLocalActivity {

            /** Lang's incremental sequence number, used as the operation identifier */
            seq?: (number|null);

            /** ScheduleLocalActivity activityId */
            activityId?: (string|null);

            /** ScheduleLocalActivity activityType */
            activityType?: (string|null);

            /**
             * Local activities can start with a non-1 attempt, if lang has been told to backoff using
             * a timer before retrying. It should pass the attempt number from a `DoBackoff` activity
             * resolution.
             */
            attempt?: (number|null);

            /**
             * If this local activity is a retry (as per the attempt field) this needs to be the original
             * scheduling time (as provided in `DoBackoff`)
             */
            originalScheduleTime?: (google.protobuf.ITimestamp|null);

            /** ScheduleLocalActivity headers */
            headers?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

            /** Arguments/input to the activity. */
            "arguments"?: (temporal.api.common.v1.IPayload[]|null);

            /**
             * Indicates how long the caller is willing to wait for local activity completion. Limits how
             * long retries will be attempted. When not specified defaults to the workflow execution
             * timeout (which may be unset).
             */
            scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

            /**
             * Limits time the local activity can idle internally before being executed. That can happen if
             * the worker is currently at max concurrent local activity executions. This timeout is always
             * non retryable as all a retry would achieve is to put it back into the same queue. Defaults
             * to `schedule_to_close_timeout` if not specified and that is set. Must be <=
             * `schedule_to_close_timeout` when set, otherwise, it will be clamped down.
             */
            scheduleToStartTimeout?: (google.protobuf.IDuration|null);

            /**
             * Maximum time the local activity is allowed to execute after the task is dispatched. This
             * timeout is always retryable. Either or both of `schedule_to_close_timeout` and this must be
             * specified. If set, this must be <= `schedule_to_close_timeout`, otherwise, it will be
             * clamped down.
             */
            startToCloseTimeout?: (google.protobuf.IDuration|null);

            /**
             * Specify a retry policy for the local activity. By default local activities will be retried
             * indefinitely.
             */
            retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /**
             * If the activity is retrying and backoff would exceed this value, lang will be told to
             * schedule a timer and retry the activity after. Otherwise, backoff will happen internally in
             * core. Defaults to 1 minute.
             */
            localRetryThreshold?: (google.protobuf.IDuration|null);

            /**
             * Defines how the workflow will wait (or not) for cancellation of the activity to be
             * confirmed. Lang should default this to `WAIT_CANCELLATION_COMPLETED`, even though proto
             * will default to `TRY_CANCEL` automatically.
             */
            cancellationType?: (coresdk.workflow_commands.ActivityCancellationType|null);
        }

        /** Represents a ScheduleLocalActivity. */
        class ScheduleLocalActivity implements IScheduleLocalActivity {

            /**
             * Constructs a new ScheduleLocalActivity.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IScheduleLocalActivity);

            /** Lang's incremental sequence number, used as the operation identifier */
            public seq: number;

            /** ScheduleLocalActivity activityId. */
            public activityId: string;

            /** ScheduleLocalActivity activityType. */
            public activityType: string;

            /**
             * Local activities can start with a non-1 attempt, if lang has been told to backoff using
             * a timer before retrying. It should pass the attempt number from a `DoBackoff` activity
             * resolution.
             */
            public attempt: number;

            /**
             * If this local activity is a retry (as per the attempt field) this needs to be the original
             * scheduling time (as provided in `DoBackoff`)
             */
            public originalScheduleTime?: (google.protobuf.ITimestamp|null);

            /** ScheduleLocalActivity headers. */
            public headers: { [k: string]: temporal.api.common.v1.IPayload };

            /** Arguments/input to the activity. */
            public arguments: temporal.api.common.v1.IPayload[];

            /**
             * Indicates how long the caller is willing to wait for local activity completion. Limits how
             * long retries will be attempted. When not specified defaults to the workflow execution
             * timeout (which may be unset).
             */
            public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

            /**
             * Limits time the local activity can idle internally before being executed. That can happen if
             * the worker is currently at max concurrent local activity executions. This timeout is always
             * non retryable as all a retry would achieve is to put it back into the same queue. Defaults
             * to `schedule_to_close_timeout` if not specified and that is set. Must be <=
             * `schedule_to_close_timeout` when set, otherwise, it will be clamped down.
             */
            public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

            /**
             * Maximum time the local activity is allowed to execute after the task is dispatched. This
             * timeout is always retryable. Either or both of `schedule_to_close_timeout` and this must be
             * specified. If set, this must be <= `schedule_to_close_timeout`, otherwise, it will be
             * clamped down.
             */
            public startToCloseTimeout?: (google.protobuf.IDuration|null);

            /**
             * Specify a retry policy for the local activity. By default local activities will be retried
             * indefinitely.
             */
            public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /**
             * If the activity is retrying and backoff would exceed this value, lang will be told to
             * schedule a timer and retry the activity after. Otherwise, backoff will happen internally in
             * core. Defaults to 1 minute.
             */
            public localRetryThreshold?: (google.protobuf.IDuration|null);

            /**
             * Defines how the workflow will wait (or not) for cancellation of the activity to be
             * confirmed. Lang should default this to `WAIT_CANCELLATION_COMPLETED`, even though proto
             * will default to `TRY_CANCEL` automatically.
             */
            public cancellationType: coresdk.workflow_commands.ActivityCancellationType;

            /**
             * Creates a new ScheduleLocalActivity instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ScheduleLocalActivity instance
             */
            public static create(properties?: coresdk.workflow_commands.IScheduleLocalActivity): coresdk.workflow_commands.ScheduleLocalActivity;

            /**
             * Encodes the specified ScheduleLocalActivity message. Does not implicitly {@link coresdk.workflow_commands.ScheduleLocalActivity.verify|verify} messages.
             * @param message ScheduleLocalActivity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IScheduleLocalActivity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ScheduleLocalActivity message, length delimited. Does not implicitly {@link coresdk.workflow_commands.ScheduleLocalActivity.verify|verify} messages.
             * @param message ScheduleLocalActivity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IScheduleLocalActivity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ScheduleLocalActivity message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ScheduleLocalActivity
             * @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): coresdk.workflow_commands.ScheduleLocalActivity;

            /**
             * Decodes a ScheduleLocalActivity message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ScheduleLocalActivity
             * @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)): coresdk.workflow_commands.ScheduleLocalActivity;

            /**
             * Creates a ScheduleLocalActivity message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ScheduleLocalActivity
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.ScheduleLocalActivity;

            /**
             * Creates a plain object from a ScheduleLocalActivity message. Also converts values to other types if specified.
             * @param message ScheduleLocalActivity
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.ScheduleLocalActivity, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ScheduleLocalActivity to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ScheduleLocalActivity
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** ActivityCancellationType enum. */
        enum ActivityCancellationType {
            TRY_CANCEL = 0,
            WAIT_CANCELLATION_COMPLETED = 1,
            ABANDON = 2
        }

        /** Properties of a RequestCancelActivity. */
        interface IRequestCancelActivity {

            /** Lang's incremental sequence number as passed to `ScheduleActivity` */
            seq?: (number|null);
        }

        /** Represents a RequestCancelActivity. */
        class RequestCancelActivity implements IRequestCancelActivity {

            /**
             * Constructs a new RequestCancelActivity.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IRequestCancelActivity);

            /** Lang's incremental sequence number as passed to `ScheduleActivity` */
            public seq: number;

            /**
             * Creates a new RequestCancelActivity instance using the specified properties.
             * @param [properties] Properties to set
             * @returns RequestCancelActivity instance
             */
            public static create(properties?: coresdk.workflow_commands.IRequestCancelActivity): coresdk.workflow_commands.RequestCancelActivity;

            /**
             * Encodes the specified RequestCancelActivity message. Does not implicitly {@link coresdk.workflow_commands.RequestCancelActivity.verify|verify} messages.
             * @param message RequestCancelActivity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IRequestCancelActivity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified RequestCancelActivity message, length delimited. Does not implicitly {@link coresdk.workflow_commands.RequestCancelActivity.verify|verify} messages.
             * @param message RequestCancelActivity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IRequestCancelActivity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a RequestCancelActivity message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns RequestCancelActivity
             * @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): coresdk.workflow_commands.RequestCancelActivity;

            /**
             * Decodes a RequestCancelActivity message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns RequestCancelActivity
             * @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)): coresdk.workflow_commands.RequestCancelActivity;

            /**
             * Creates a RequestCancelActivity message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns RequestCancelActivity
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.RequestCancelActivity;

            /**
             * Creates a plain object from a RequestCancelActivity message. Also converts values to other types if specified.
             * @param message RequestCancelActivity
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.RequestCancelActivity, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this RequestCancelActivity to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for RequestCancelActivity
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a RequestCancelLocalActivity. */
        interface IRequestCancelLocalActivity {

            /** Lang's incremental sequence number as passed to `ScheduleLocalActivity` */
            seq?: (number|null);
        }

        /** Represents a RequestCancelLocalActivity. */
        class RequestCancelLocalActivity implements IRequestCancelLocalActivity {

            /**
             * Constructs a new RequestCancelLocalActivity.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IRequestCancelLocalActivity);

            /** Lang's incremental sequence number as passed to `ScheduleLocalActivity` */
            public seq: number;

            /**
             * Creates a new RequestCancelLocalActivity instance using the specified properties.
             * @param [properties] Properties to set
             * @returns RequestCancelLocalActivity instance
             */
            public static create(properties?: coresdk.workflow_commands.IRequestCancelLocalActivity): coresdk.workflow_commands.RequestCancelLocalActivity;

            /**
             * Encodes the specified RequestCancelLocalActivity message. Does not implicitly {@link coresdk.workflow_commands.RequestCancelLocalActivity.verify|verify} messages.
             * @param message RequestCancelLocalActivity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IRequestCancelLocalActivity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified RequestCancelLocalActivity message, length delimited. Does not implicitly {@link coresdk.workflow_commands.RequestCancelLocalActivity.verify|verify} messages.
             * @param message RequestCancelLocalActivity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IRequestCancelLocalActivity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a RequestCancelLocalActivity message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns RequestCancelLocalActivity
             * @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): coresdk.workflow_commands.RequestCancelLocalActivity;

            /**
             * Decodes a RequestCancelLocalActivity message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns RequestCancelLocalActivity
             * @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)): coresdk.workflow_commands.RequestCancelLocalActivity;

            /**
             * Creates a RequestCancelLocalActivity message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns RequestCancelLocalActivity
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.RequestCancelLocalActivity;

            /**
             * Creates a plain object from a RequestCancelLocalActivity message. Also converts values to other types if specified.
             * @param message RequestCancelLocalActivity
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.RequestCancelLocalActivity, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this RequestCancelLocalActivity to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for RequestCancelLocalActivity
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a QueryResult. */
        interface IQueryResult {

            /** Corresponds to the id provided in the activation job */
            queryId?: (string|null);

            /** QueryResult succeeded */
            succeeded?: (coresdk.workflow_commands.IQuerySuccess|null);

            /** QueryResult failed */
            failed?: (temporal.api.failure.v1.IFailure|null);
        }

        /** Represents a QueryResult. */
        class QueryResult implements IQueryResult {

            /**
             * Constructs a new QueryResult.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IQueryResult);

            /** Corresponds to the id provided in the activation job */
            public queryId: string;

            /** QueryResult succeeded. */
            public succeeded?: (coresdk.workflow_commands.IQuerySuccess|null);

            /** QueryResult failed. */
            public failed?: (temporal.api.failure.v1.IFailure|null);

            /** QueryResult variant. */
            public variant?: ("succeeded"|"failed");

            /**
             * Creates a new QueryResult instance using the specified properties.
             * @param [properties] Properties to set
             * @returns QueryResult instance
             */
            public static create(properties?: coresdk.workflow_commands.IQueryResult): coresdk.workflow_commands.QueryResult;

            /**
             * Encodes the specified QueryResult message. Does not implicitly {@link coresdk.workflow_commands.QueryResult.verify|verify} messages.
             * @param message QueryResult message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IQueryResult, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified QueryResult message, length delimited. Does not implicitly {@link coresdk.workflow_commands.QueryResult.verify|verify} messages.
             * @param message QueryResult message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IQueryResult, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a QueryResult message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns QueryResult
             * @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): coresdk.workflow_commands.QueryResult;

            /**
             * Decodes a QueryResult message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns QueryResult
             * @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)): coresdk.workflow_commands.QueryResult;

            /**
             * Creates a QueryResult message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns QueryResult
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.QueryResult;

            /**
             * Creates a plain object from a QueryResult message. Also converts values to other types if specified.
             * @param message QueryResult
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.QueryResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this QueryResult to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for QueryResult
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a QuerySuccess. */
        interface IQuerySuccess {

            /** QuerySuccess response */
            response?: (temporal.api.common.v1.IPayload|null);
        }

        /** Represents a QuerySuccess. */
        class QuerySuccess implements IQuerySuccess {

            /**
             * Constructs a new QuerySuccess.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IQuerySuccess);

            /** QuerySuccess response. */
            public response?: (temporal.api.common.v1.IPayload|null);

            /**
             * Creates a new QuerySuccess instance using the specified properties.
             * @param [properties] Properties to set
             * @returns QuerySuccess instance
             */
            public static create(properties?: coresdk.workflow_commands.IQuerySuccess): coresdk.workflow_commands.QuerySuccess;

            /**
             * Encodes the specified QuerySuccess message. Does not implicitly {@link coresdk.workflow_commands.QuerySuccess.verify|verify} messages.
             * @param message QuerySuccess message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IQuerySuccess, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified QuerySuccess message, length delimited. Does not implicitly {@link coresdk.workflow_commands.QuerySuccess.verify|verify} messages.
             * @param message QuerySuccess message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IQuerySuccess, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a QuerySuccess message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns QuerySuccess
             * @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): coresdk.workflow_commands.QuerySuccess;

            /**
             * Decodes a QuerySuccess message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns QuerySuccess
             * @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)): coresdk.workflow_commands.QuerySuccess;

            /**
             * Creates a QuerySuccess message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns QuerySuccess
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.QuerySuccess;

            /**
             * Creates a plain object from a QuerySuccess message. Also converts values to other types if specified.
             * @param message QuerySuccess
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.QuerySuccess, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this QuerySuccess to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for QuerySuccess
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CompleteWorkflowExecution. */
        interface ICompleteWorkflowExecution {

            /** CompleteWorkflowExecution result */
            result?: (temporal.api.common.v1.IPayload|null);
        }

        /** Issued when the workflow completes successfully */
        class CompleteWorkflowExecution implements ICompleteWorkflowExecution {

            /**
             * Constructs a new CompleteWorkflowExecution.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.ICompleteWorkflowExecution);

            /** CompleteWorkflowExecution result. */
            public result?: (temporal.api.common.v1.IPayload|null);

            /**
             * Creates a new CompleteWorkflowExecution instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CompleteWorkflowExecution instance
             */
            public static create(properties?: coresdk.workflow_commands.ICompleteWorkflowExecution): coresdk.workflow_commands.CompleteWorkflowExecution;

            /**
             * Encodes the specified CompleteWorkflowExecution message. Does not implicitly {@link coresdk.workflow_commands.CompleteWorkflowExecution.verify|verify} messages.
             * @param message CompleteWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.ICompleteWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CompleteWorkflowExecution message, length delimited. Does not implicitly {@link coresdk.workflow_commands.CompleteWorkflowExecution.verify|verify} messages.
             * @param message CompleteWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.ICompleteWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CompleteWorkflowExecution message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CompleteWorkflowExecution
             * @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): coresdk.workflow_commands.CompleteWorkflowExecution;

            /**
             * Decodes a CompleteWorkflowExecution message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CompleteWorkflowExecution
             * @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)): coresdk.workflow_commands.CompleteWorkflowExecution;

            /**
             * Creates a CompleteWorkflowExecution message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CompleteWorkflowExecution
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.CompleteWorkflowExecution;

            /**
             * Creates a plain object from a CompleteWorkflowExecution message. Also converts values to other types if specified.
             * @param message CompleteWorkflowExecution
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.CompleteWorkflowExecution, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CompleteWorkflowExecution to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CompleteWorkflowExecution
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a FailWorkflowExecution. */
        interface IFailWorkflowExecution {

            /** FailWorkflowExecution failure */
            failure?: (temporal.api.failure.v1.IFailure|null);
        }

        /** Issued when the workflow errors out */
        class FailWorkflowExecution implements IFailWorkflowExecution {

            /**
             * Constructs a new FailWorkflowExecution.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IFailWorkflowExecution);

            /** FailWorkflowExecution failure. */
            public failure?: (temporal.api.failure.v1.IFailure|null);

            /**
             * Creates a new FailWorkflowExecution instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FailWorkflowExecution instance
             */
            public static create(properties?: coresdk.workflow_commands.IFailWorkflowExecution): coresdk.workflow_commands.FailWorkflowExecution;

            /**
             * Encodes the specified FailWorkflowExecution message. Does not implicitly {@link coresdk.workflow_commands.FailWorkflowExecution.verify|verify} messages.
             * @param message FailWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IFailWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FailWorkflowExecution message, length delimited. Does not implicitly {@link coresdk.workflow_commands.FailWorkflowExecution.verify|verify} messages.
             * @param message FailWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IFailWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FailWorkflowExecution message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FailWorkflowExecution
             * @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): coresdk.workflow_commands.FailWorkflowExecution;

            /**
             * Decodes a FailWorkflowExecution message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FailWorkflowExecution
             * @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)): coresdk.workflow_commands.FailWorkflowExecution;

            /**
             * Creates a FailWorkflowExecution message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FailWorkflowExecution
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.FailWorkflowExecution;

            /**
             * Creates a plain object from a FailWorkflowExecution message. Also converts values to other types if specified.
             * @param message FailWorkflowExecution
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.FailWorkflowExecution, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FailWorkflowExecution to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FailWorkflowExecution
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ContinueAsNewWorkflowExecution. */
        interface IContinueAsNewWorkflowExecution {

            /** The identifier the lang-specific sdk uses to execute workflow code */
            workflowType?: (string|null);

            /** Task queue for the new workflow execution */
            taskQueue?: (string|null);

            /**
             * Inputs to the workflow code. Should be specified. Will not re-use old arguments, as that
             * typically wouldn't make any sense.
             */
            "arguments"?: (temporal.api.common.v1.IPayload[]|null);

            /** Timeout for a single run of the new workflow. Will not re-use current workflow's value. */
            workflowRunTimeout?: (google.protobuf.IDuration|null);

            /** Timeout of a single workflow task. Will not re-use current workflow's value. */
            workflowTaskTimeout?: (google.protobuf.IDuration|null);

            /** If set, the new workflow will have this memo. If unset, re-uses the current workflow's memo */
            memo?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

            /**
             * If set, the new workflow will have these headers. Will *not* re-use current workflow's
             * headers otherwise.
             */
            headers?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

            /**
             * If set, the new workflow will have these search attributes. If unset, re-uses the current
             * workflow's search attributes.
             */
            searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

            /**
             * If set, the new workflow will have this retry policy. If unset, re-uses the current
             * workflow's retry policy.
             */
            retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /** Whether the continued workflow should run on a worker with a compatible build id or not. */
            versioningIntent?: (coresdk.common.VersioningIntent|null);

            /**
             * Experimental. Optionally decide the versioning behavior that the first task of the new run should use.
             * For example, choose to AutoUpgrade on continue-as-new instead of inheriting the pinned version
             * of the previous run.
             */
            initialVersioningBehavior?: (temporal.api.enums.v1.ContinueAsNewVersioningBehavior|null);
        }

        /** Continue the workflow as a new execution */
        class ContinueAsNewWorkflowExecution implements IContinueAsNewWorkflowExecution {

            /**
             * Constructs a new ContinueAsNewWorkflowExecution.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IContinueAsNewWorkflowExecution);

            /** The identifier the lang-specific sdk uses to execute workflow code */
            public workflowType: string;

            /** Task queue for the new workflow execution */
            public taskQueue: string;

            /**
             * Inputs to the workflow code. Should be specified. Will not re-use old arguments, as that
             * typically wouldn't make any sense.
             */
            public arguments: temporal.api.common.v1.IPayload[];

            /** Timeout for a single run of the new workflow. Will not re-use current workflow's value. */
            public workflowRunTimeout?: (google.protobuf.IDuration|null);

            /** Timeout of a single workflow task. Will not re-use current workflow's value. */
            public workflowTaskTimeout?: (google.protobuf.IDuration|null);

            /** If set, the new workflow will have this memo. If unset, re-uses the current workflow's memo */
            public memo: { [k: string]: temporal.api.common.v1.IPayload };

            /**
             * If set, the new workflow will have these headers. Will *not* re-use current workflow's
             * headers otherwise.
             */
            public headers: { [k: string]: temporal.api.common.v1.IPayload };

            /**
             * If set, the new workflow will have these search attributes. If unset, re-uses the current
             * workflow's search attributes.
             */
            public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

            /**
             * If set, the new workflow will have this retry policy. If unset, re-uses the current
             * workflow's retry policy.
             */
            public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /** Whether the continued workflow should run on a worker with a compatible build id or not. */
            public versioningIntent: coresdk.common.VersioningIntent;

            /**
             * Experimental. Optionally decide the versioning behavior that the first task of the new run should use.
             * For example, choose to AutoUpgrade on continue-as-new instead of inheriting the pinned version
             * of the previous run.
             */
            public initialVersioningBehavior: temporal.api.enums.v1.ContinueAsNewVersioningBehavior;

            /**
             * Creates a new ContinueAsNewWorkflowExecution instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ContinueAsNewWorkflowExecution instance
             */
            public static create(properties?: coresdk.workflow_commands.IContinueAsNewWorkflowExecution): coresdk.workflow_commands.ContinueAsNewWorkflowExecution;

            /**
             * Encodes the specified ContinueAsNewWorkflowExecution message. Does not implicitly {@link coresdk.workflow_commands.ContinueAsNewWorkflowExecution.verify|verify} messages.
             * @param message ContinueAsNewWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IContinueAsNewWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ContinueAsNewWorkflowExecution message, length delimited. Does not implicitly {@link coresdk.workflow_commands.ContinueAsNewWorkflowExecution.verify|verify} messages.
             * @param message ContinueAsNewWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IContinueAsNewWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ContinueAsNewWorkflowExecution message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ContinueAsNewWorkflowExecution
             * @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): coresdk.workflow_commands.ContinueAsNewWorkflowExecution;

            /**
             * Decodes a ContinueAsNewWorkflowExecution message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ContinueAsNewWorkflowExecution
             * @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)): coresdk.workflow_commands.ContinueAsNewWorkflowExecution;

            /**
             * Creates a ContinueAsNewWorkflowExecution message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ContinueAsNewWorkflowExecution
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.ContinueAsNewWorkflowExecution;

            /**
             * Creates a plain object from a ContinueAsNewWorkflowExecution message. Also converts values to other types if specified.
             * @param message ContinueAsNewWorkflowExecution
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.ContinueAsNewWorkflowExecution, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ContinueAsNewWorkflowExecution to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ContinueAsNewWorkflowExecution
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CancelWorkflowExecution. */
        interface ICancelWorkflowExecution {
        }

        /**
         * Indicate a workflow has completed as cancelled. Generally sent as a response to an activation
         * containing a cancellation job.
         */
        class CancelWorkflowExecution implements ICancelWorkflowExecution {

            /**
             * Constructs a new CancelWorkflowExecution.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.ICancelWorkflowExecution);

            /**
             * Creates a new CancelWorkflowExecution instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CancelWorkflowExecution instance
             */
            public static create(properties?: coresdk.workflow_commands.ICancelWorkflowExecution): coresdk.workflow_commands.CancelWorkflowExecution;

            /**
             * Encodes the specified CancelWorkflowExecution message. Does not implicitly {@link coresdk.workflow_commands.CancelWorkflowExecution.verify|verify} messages.
             * @param message CancelWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.ICancelWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CancelWorkflowExecution message, length delimited. Does not implicitly {@link coresdk.workflow_commands.CancelWorkflowExecution.verify|verify} messages.
             * @param message CancelWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.ICancelWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CancelWorkflowExecution message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CancelWorkflowExecution
             * @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): coresdk.workflow_commands.CancelWorkflowExecution;

            /**
             * Decodes a CancelWorkflowExecution message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CancelWorkflowExecution
             * @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)): coresdk.workflow_commands.CancelWorkflowExecution;

            /**
             * Creates a CancelWorkflowExecution message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CancelWorkflowExecution
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.CancelWorkflowExecution;

            /**
             * Creates a plain object from a CancelWorkflowExecution message. Also converts values to other types if specified.
             * @param message CancelWorkflowExecution
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.CancelWorkflowExecution, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CancelWorkflowExecution to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CancelWorkflowExecution
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a SetPatchMarker. */
        interface ISetPatchMarker {

            /**
             * A user-chosen identifier for this patch. If the same identifier is used in multiple places in
             * the code, those places are considered to be versioned as one unit. IE: The check call will
             * return the same result for all of them
             */
            patchId?: (string|null);

            /**
             * Can be set to true to indicate that branches using this change are being removed, and all
             * future worker deployments will only have the "with change" code in them.
             */
            deprecated?: (boolean|null);
        }

        /** A request to set/check if a certain patch is present or not */
        class SetPatchMarker implements ISetPatchMarker {

            /**
             * Constructs a new SetPatchMarker.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.ISetPatchMarker);

            /**
             * A user-chosen identifier for this patch. If the same identifier is used in multiple places in
             * the code, those places are considered to be versioned as one unit. IE: The check call will
             * return the same result for all of them
             */
            public patchId: string;

            /**
             * Can be set to true to indicate that branches using this change are being removed, and all
             * future worker deployments will only have the "with change" code in them.
             */
            public deprecated: boolean;

            /**
             * Creates a new SetPatchMarker instance using the specified properties.
             * @param [properties] Properties to set
             * @returns SetPatchMarker instance
             */
            public static create(properties?: coresdk.workflow_commands.ISetPatchMarker): coresdk.workflow_commands.SetPatchMarker;

            /**
             * Encodes the specified SetPatchMarker message. Does not implicitly {@link coresdk.workflow_commands.SetPatchMarker.verify|verify} messages.
             * @param message SetPatchMarker message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.ISetPatchMarker, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified SetPatchMarker message, length delimited. Does not implicitly {@link coresdk.workflow_commands.SetPatchMarker.verify|verify} messages.
             * @param message SetPatchMarker message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.ISetPatchMarker, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a SetPatchMarker message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns SetPatchMarker
             * @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): coresdk.workflow_commands.SetPatchMarker;

            /**
             * Decodes a SetPatchMarker message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns SetPatchMarker
             * @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)): coresdk.workflow_commands.SetPatchMarker;

            /**
             * Creates a SetPatchMarker message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns SetPatchMarker
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.SetPatchMarker;

            /**
             * Creates a plain object from a SetPatchMarker message. Also converts values to other types if specified.
             * @param message SetPatchMarker
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.SetPatchMarker, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this SetPatchMarker to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for SetPatchMarker
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a StartChildWorkflowExecution. */
        interface IStartChildWorkflowExecution {

            /** Lang's incremental sequence number, used as the operation identifier */
            seq?: (number|null);

            /** StartChildWorkflowExecution namespace */
            namespace?: (string|null);

            /** StartChildWorkflowExecution workflowId */
            workflowId?: (string|null);

            /** StartChildWorkflowExecution workflowType */
            workflowType?: (string|null);

            /** StartChildWorkflowExecution taskQueue */
            taskQueue?: (string|null);

            /** StartChildWorkflowExecution input */
            input?: (temporal.api.common.v1.IPayload[]|null);

            /** Total workflow execution timeout including retries and continue as new. */
            workflowExecutionTimeout?: (google.protobuf.IDuration|null);

            /** Timeout of a single workflow run. */
            workflowRunTimeout?: (google.protobuf.IDuration|null);

            /** Timeout of a single workflow task. */
            workflowTaskTimeout?: (google.protobuf.IDuration|null);

            /** Default: PARENT_CLOSE_POLICY_TERMINATE. */
            parentClosePolicy?: (coresdk.child_workflow.ParentClosePolicy|null);

            /**
             * string control = 11; (unused from StartChildWorkflowExecutionCommandAttributes)
             * Default: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE.
             */
            workflowIdReusePolicy?: (temporal.api.enums.v1.WorkflowIdReusePolicy|null);

            /** StartChildWorkflowExecution retryPolicy */
            retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /** StartChildWorkflowExecution cronSchedule */
            cronSchedule?: (string|null);

            /** Header fields */
            headers?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

            /** Memo fields */
            memo?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

            /** Search attributes */
            searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

            /** Defines behaviour of the underlying workflow when child workflow cancellation has been requested. */
            cancellationType?: (coresdk.child_workflow.ChildWorkflowCancellationType|null);

            /** Whether this child should run on a worker with a compatible build id or not. */
            versioningIntent?: (coresdk.common.VersioningIntent|null);

            /** The Priority to use for this activity */
            priority?: (temporal.api.common.v1.IPriority|null);
        }

        /** Start a child workflow execution */
        class StartChildWorkflowExecution implements IStartChildWorkflowExecution {

            /**
             * Constructs a new StartChildWorkflowExecution.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IStartChildWorkflowExecution);

            /** Lang's incremental sequence number, used as the operation identifier */
            public seq: number;

            /** StartChildWorkflowExecution namespace. */
            public namespace: string;

            /** StartChildWorkflowExecution workflowId. */
            public workflowId: string;

            /** StartChildWorkflowExecution workflowType. */
            public workflowType: string;

            /** StartChildWorkflowExecution taskQueue. */
            public taskQueue: string;

            /** StartChildWorkflowExecution input. */
            public input: temporal.api.common.v1.IPayload[];

            /** Total workflow execution timeout including retries and continue as new. */
            public workflowExecutionTimeout?: (google.protobuf.IDuration|null);

            /** Timeout of a single workflow run. */
            public workflowRunTimeout?: (google.protobuf.IDuration|null);

            /** Timeout of a single workflow task. */
            public workflowTaskTimeout?: (google.protobuf.IDuration|null);

            /** Default: PARENT_CLOSE_POLICY_TERMINATE. */
            public parentClosePolicy: coresdk.child_workflow.ParentClosePolicy;

            /**
             * string control = 11; (unused from StartChildWorkflowExecutionCommandAttributes)
             * Default: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE.
             */
            public workflowIdReusePolicy: temporal.api.enums.v1.WorkflowIdReusePolicy;

            /** StartChildWorkflowExecution retryPolicy. */
            public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

            /** StartChildWorkflowExecution cronSchedule. */
            public cronSchedule: string;

            /** Header fields */
            public headers: { [k: string]: temporal.api.common.v1.IPayload };

            /** Memo fields */
            public memo: { [k: string]: temporal.api.common.v1.IPayload };

            /** Search attributes */
            public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

            /** Defines behaviour of the underlying workflow when child workflow cancellation has been requested. */
            public cancellationType: coresdk.child_workflow.ChildWorkflowCancellationType;

            /** Whether this child should run on a worker with a compatible build id or not. */
            public versioningIntent: coresdk.common.VersioningIntent;

            /** The Priority to use for this activity */
            public priority?: (temporal.api.common.v1.IPriority|null);

            /**
             * Creates a new StartChildWorkflowExecution instance using the specified properties.
             * @param [properties] Properties to set
             * @returns StartChildWorkflowExecution instance
             */
            public static create(properties?: coresdk.workflow_commands.IStartChildWorkflowExecution): coresdk.workflow_commands.StartChildWorkflowExecution;

            /**
             * Encodes the specified StartChildWorkflowExecution message. Does not implicitly {@link coresdk.workflow_commands.StartChildWorkflowExecution.verify|verify} messages.
             * @param message StartChildWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IStartChildWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified StartChildWorkflowExecution message, length delimited. Does not implicitly {@link coresdk.workflow_commands.StartChildWorkflowExecution.verify|verify} messages.
             * @param message StartChildWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IStartChildWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a StartChildWorkflowExecution message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns StartChildWorkflowExecution
             * @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): coresdk.workflow_commands.StartChildWorkflowExecution;

            /**
             * Decodes a StartChildWorkflowExecution message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns StartChildWorkflowExecution
             * @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)): coresdk.workflow_commands.StartChildWorkflowExecution;

            /**
             * Creates a StartChildWorkflowExecution message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns StartChildWorkflowExecution
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.StartChildWorkflowExecution;

            /**
             * Creates a plain object from a StartChildWorkflowExecution message. Also converts values to other types if specified.
             * @param message StartChildWorkflowExecution
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.StartChildWorkflowExecution, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this StartChildWorkflowExecution to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for StartChildWorkflowExecution
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CancelChildWorkflowExecution. */
        interface ICancelChildWorkflowExecution {

            /** Sequence number as given to the `StartChildWorkflowExecution` command */
            childWorkflowSeq?: (number|null);

            /** A reason for the cancellation */
            reason?: (string|null);
        }

        /** Cancel a child workflow */
        class CancelChildWorkflowExecution implements ICancelChildWorkflowExecution {

            /**
             * Constructs a new CancelChildWorkflowExecution.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.ICancelChildWorkflowExecution);

            /** Sequence number as given to the `StartChildWorkflowExecution` command */
            public childWorkflowSeq: number;

            /** A reason for the cancellation */
            public reason: string;

            /**
             * Creates a new CancelChildWorkflowExecution instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CancelChildWorkflowExecution instance
             */
            public static create(properties?: coresdk.workflow_commands.ICancelChildWorkflowExecution): coresdk.workflow_commands.CancelChildWorkflowExecution;

            /**
             * Encodes the specified CancelChildWorkflowExecution message. Does not implicitly {@link coresdk.workflow_commands.CancelChildWorkflowExecution.verify|verify} messages.
             * @param message CancelChildWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.ICancelChildWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CancelChildWorkflowExecution message, length delimited. Does not implicitly {@link coresdk.workflow_commands.CancelChildWorkflowExecution.verify|verify} messages.
             * @param message CancelChildWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.ICancelChildWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CancelChildWorkflowExecution message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CancelChildWorkflowExecution
             * @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): coresdk.workflow_commands.CancelChildWorkflowExecution;

            /**
             * Decodes a CancelChildWorkflowExecution message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CancelChildWorkflowExecution
             * @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)): coresdk.workflow_commands.CancelChildWorkflowExecution;

            /**
             * Creates a CancelChildWorkflowExecution message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CancelChildWorkflowExecution
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.CancelChildWorkflowExecution;

            /**
             * Creates a plain object from a CancelChildWorkflowExecution message. Also converts values to other types if specified.
             * @param message CancelChildWorkflowExecution
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.CancelChildWorkflowExecution, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CancelChildWorkflowExecution to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CancelChildWorkflowExecution
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a RequestCancelExternalWorkflowExecution. */
        interface IRequestCancelExternalWorkflowExecution {

            /** Lang's incremental sequence number, used as the operation identifier */
            seq?: (number|null);

            /** The workflow instance being targeted */
            workflowExecution?: (coresdk.common.INamespacedWorkflowExecution|null);

            /** A reason for the cancellation */
            reason?: (string|null);
        }

        /**
         * Request cancellation of an external workflow execution. For cancellation of a child workflow,
         * prefer `CancelChildWorkflowExecution` instead, as it guards against cancel-before-start issues.
         */
        class RequestCancelExternalWorkflowExecution implements IRequestCancelExternalWorkflowExecution {

            /**
             * Constructs a new RequestCancelExternalWorkflowExecution.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IRequestCancelExternalWorkflowExecution);

            /** Lang's incremental sequence number, used as the operation identifier */
            public seq: number;

            /** The workflow instance being targeted */
            public workflowExecution?: (coresdk.common.INamespacedWorkflowExecution|null);

            /** A reason for the cancellation */
            public reason: string;

            /**
             * Creates a new RequestCancelExternalWorkflowExecution instance using the specified properties.
             * @param [properties] Properties to set
             * @returns RequestCancelExternalWorkflowExecution instance
             */
            public static create(properties?: coresdk.workflow_commands.IRequestCancelExternalWorkflowExecution): coresdk.workflow_commands.RequestCancelExternalWorkflowExecution;

            /**
             * Encodes the specified RequestCancelExternalWorkflowExecution message. Does not implicitly {@link coresdk.workflow_commands.RequestCancelExternalWorkflowExecution.verify|verify} messages.
             * @param message RequestCancelExternalWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IRequestCancelExternalWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified RequestCancelExternalWorkflowExecution message, length delimited. Does not implicitly {@link coresdk.workflow_commands.RequestCancelExternalWorkflowExecution.verify|verify} messages.
             * @param message RequestCancelExternalWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IRequestCancelExternalWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a RequestCancelExternalWorkflowExecution message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns RequestCancelExternalWorkflowExecution
             * @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): coresdk.workflow_commands.RequestCancelExternalWorkflowExecution;

            /**
             * Decodes a RequestCancelExternalWorkflowExecution message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns RequestCancelExternalWorkflowExecution
             * @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)): coresdk.workflow_commands.RequestCancelExternalWorkflowExecution;

            /**
             * Creates a RequestCancelExternalWorkflowExecution message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns RequestCancelExternalWorkflowExecution
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.RequestCancelExternalWorkflowExecution;

            /**
             * Creates a plain object from a RequestCancelExternalWorkflowExecution message. Also converts values to other types if specified.
             * @param message RequestCancelExternalWorkflowExecution
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.RequestCancelExternalWorkflowExecution, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this RequestCancelExternalWorkflowExecution to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for RequestCancelExternalWorkflowExecution
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a SignalExternalWorkflowExecution. */
        interface ISignalExternalWorkflowExecution {

            /** Lang's incremental sequence number, used as the operation identifier */
            seq?: (number|null);

            /** A specific workflow instance */
            workflowExecution?: (coresdk.common.INamespacedWorkflowExecution|null);

            /** The desired target must be a child of the issuing workflow, and this is its workflow id */
            childWorkflowId?: (string|null);

            /** Name of the signal handler */
            signalName?: (string|null);

            /** Arguments for the handler */
            args?: (temporal.api.common.v1.IPayload[]|null);

            /** Headers to attach to the signal */
            headers?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);
        }

        /** Send a signal to an external or child workflow */
        class SignalExternalWorkflowExecution implements ISignalExternalWorkflowExecution {

            /**
             * Constructs a new SignalExternalWorkflowExecution.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.ISignalExternalWorkflowExecution);

            /** Lang's incremental sequence number, used as the operation identifier */
            public seq: number;

            /** A specific workflow instance */
            public workflowExecution?: (coresdk.common.INamespacedWorkflowExecution|null);

            /** The desired target must be a child of the issuing workflow, and this is its workflow id */
            public childWorkflowId?: (string|null);

            /** Name of the signal handler */
            public signalName: string;

            /** Arguments for the handler */
            public args: temporal.api.common.v1.IPayload[];

            /** Headers to attach to the signal */
            public headers: { [k: string]: temporal.api.common.v1.IPayload };

            /** What workflow is being targeted */
            public target?: ("workflowExecution"|"childWorkflowId");

            /**
             * Creates a new SignalExternalWorkflowExecution instance using the specified properties.
             * @param [properties] Properties to set
             * @returns SignalExternalWorkflowExecution instance
             */
            public static create(properties?: coresdk.workflow_commands.ISignalExternalWorkflowExecution): coresdk.workflow_commands.SignalExternalWorkflowExecution;

            /**
             * Encodes the specified SignalExternalWorkflowExecution message. Does not implicitly {@link coresdk.workflow_commands.SignalExternalWorkflowExecution.verify|verify} messages.
             * @param message SignalExternalWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.ISignalExternalWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified SignalExternalWorkflowExecution message, length delimited. Does not implicitly {@link coresdk.workflow_commands.SignalExternalWorkflowExecution.verify|verify} messages.
             * @param message SignalExternalWorkflowExecution message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.ISignalExternalWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a SignalExternalWorkflowExecution message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns SignalExternalWorkflowExecution
             * @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): coresdk.workflow_commands.SignalExternalWorkflowExecution;

            /**
             * Decodes a SignalExternalWorkflowExecution message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns SignalExternalWorkflowExecution
             * @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)): coresdk.workflow_commands.SignalExternalWorkflowExecution;

            /**
             * Creates a SignalExternalWorkflowExecution message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns SignalExternalWorkflowExecution
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.SignalExternalWorkflowExecution;

            /**
             * Creates a plain object from a SignalExternalWorkflowExecution message. Also converts values to other types if specified.
             * @param message SignalExternalWorkflowExecution
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.SignalExternalWorkflowExecution, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this SignalExternalWorkflowExecution to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for SignalExternalWorkflowExecution
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CancelSignalWorkflow. */
        interface ICancelSignalWorkflow {

            /** Lang's incremental sequence number as passed to `SignalExternalWorkflowExecution` */
            seq?: (number|null);
        }

        /** Can be used to cancel not-already-sent `SignalExternalWorkflowExecution` commands */
        class CancelSignalWorkflow implements ICancelSignalWorkflow {

            /**
             * Constructs a new CancelSignalWorkflow.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.ICancelSignalWorkflow);

            /** Lang's incremental sequence number as passed to `SignalExternalWorkflowExecution` */
            public seq: number;

            /**
             * Creates a new CancelSignalWorkflow instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CancelSignalWorkflow instance
             */
            public static create(properties?: coresdk.workflow_commands.ICancelSignalWorkflow): coresdk.workflow_commands.CancelSignalWorkflow;

            /**
             * Encodes the specified CancelSignalWorkflow message. Does not implicitly {@link coresdk.workflow_commands.CancelSignalWorkflow.verify|verify} messages.
             * @param message CancelSignalWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.ICancelSignalWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CancelSignalWorkflow message, length delimited. Does not implicitly {@link coresdk.workflow_commands.CancelSignalWorkflow.verify|verify} messages.
             * @param message CancelSignalWorkflow message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.ICancelSignalWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CancelSignalWorkflow message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CancelSignalWorkflow
             * @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): coresdk.workflow_commands.CancelSignalWorkflow;

            /**
             * Decodes a CancelSignalWorkflow message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CancelSignalWorkflow
             * @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)): coresdk.workflow_commands.CancelSignalWorkflow;

            /**
             * Creates a CancelSignalWorkflow message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CancelSignalWorkflow
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.CancelSignalWorkflow;

            /**
             * Creates a plain object from a CancelSignalWorkflow message. Also converts values to other types if specified.
             * @param message CancelSignalWorkflow
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.CancelSignalWorkflow, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CancelSignalWorkflow to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CancelSignalWorkflow
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an UpsertWorkflowSearchAttributes. */
        interface IUpsertWorkflowSearchAttributes {

            /**
             * SearchAttributes to upsert. The indexed_fields map will be merged with existing search
             * attributes, with these values taking precedence.
             */
            searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);
        }

        /** Represents an UpsertWorkflowSearchAttributes. */
        class UpsertWorkflowSearchAttributes implements IUpsertWorkflowSearchAttributes {

            /**
             * Constructs a new UpsertWorkflowSearchAttributes.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IUpsertWorkflowSearchAttributes);

            /**
             * SearchAttributes to upsert. The indexed_fields map will be merged with existing search
             * attributes, with these values taking precedence.
             */
            public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

            /**
             * Creates a new UpsertWorkflowSearchAttributes instance using the specified properties.
             * @param [properties] Properties to set
             * @returns UpsertWorkflowSearchAttributes instance
             */
            public static create(properties?: coresdk.workflow_commands.IUpsertWorkflowSearchAttributes): coresdk.workflow_commands.UpsertWorkflowSearchAttributes;

            /**
             * Encodes the specified UpsertWorkflowSearchAttributes message. Does not implicitly {@link coresdk.workflow_commands.UpsertWorkflowSearchAttributes.verify|verify} messages.
             * @param message UpsertWorkflowSearchAttributes message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IUpsertWorkflowSearchAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified UpsertWorkflowSearchAttributes message, length delimited. Does not implicitly {@link coresdk.workflow_commands.UpsertWorkflowSearchAttributes.verify|verify} messages.
             * @param message UpsertWorkflowSearchAttributes message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IUpsertWorkflowSearchAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an UpsertWorkflowSearchAttributes message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns UpsertWorkflowSearchAttributes
             * @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): coresdk.workflow_commands.UpsertWorkflowSearchAttributes;

            /**
             * Decodes an UpsertWorkflowSearchAttributes message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns UpsertWorkflowSearchAttributes
             * @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)): coresdk.workflow_commands.UpsertWorkflowSearchAttributes;

            /**
             * Creates an UpsertWorkflowSearchAttributes message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns UpsertWorkflowSearchAttributes
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.UpsertWorkflowSearchAttributes;

            /**
             * Creates a plain object from an UpsertWorkflowSearchAttributes message. Also converts values to other types if specified.
             * @param message UpsertWorkflowSearchAttributes
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.UpsertWorkflowSearchAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this UpsertWorkflowSearchAttributes to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for UpsertWorkflowSearchAttributes
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ModifyWorkflowProperties. */
        interface IModifyWorkflowProperties {

            /**
             * If set, update the workflow memo with the provided values. The values will be merged with
             * the existing memo. If the user wants to delete values, a default/empty Payload should be
             * used as the value for the key being deleted.
             */
            upsertedMemo?: (temporal.api.common.v1.IMemo|null);
        }

        /** Represents a ModifyWorkflowProperties. */
        class ModifyWorkflowProperties implements IModifyWorkflowProperties {

            /**
             * Constructs a new ModifyWorkflowProperties.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IModifyWorkflowProperties);

            /**
             * If set, update the workflow memo with the provided values. The values will be merged with
             * the existing memo. If the user wants to delete values, a default/empty Payload should be
             * used as the value for the key being deleted.
             */
            public upsertedMemo?: (temporal.api.common.v1.IMemo|null);

            /**
             * Creates a new ModifyWorkflowProperties instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ModifyWorkflowProperties instance
             */
            public static create(properties?: coresdk.workflow_commands.IModifyWorkflowProperties): coresdk.workflow_commands.ModifyWorkflowProperties;

            /**
             * Encodes the specified ModifyWorkflowProperties message. Does not implicitly {@link coresdk.workflow_commands.ModifyWorkflowProperties.verify|verify} messages.
             * @param message ModifyWorkflowProperties message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IModifyWorkflowProperties, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ModifyWorkflowProperties message, length delimited. Does not implicitly {@link coresdk.workflow_commands.ModifyWorkflowProperties.verify|verify} messages.
             * @param message ModifyWorkflowProperties message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IModifyWorkflowProperties, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ModifyWorkflowProperties message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ModifyWorkflowProperties
             * @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): coresdk.workflow_commands.ModifyWorkflowProperties;

            /**
             * Decodes a ModifyWorkflowProperties message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ModifyWorkflowProperties
             * @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)): coresdk.workflow_commands.ModifyWorkflowProperties;

            /**
             * Creates a ModifyWorkflowProperties message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ModifyWorkflowProperties
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.ModifyWorkflowProperties;

            /**
             * Creates a plain object from a ModifyWorkflowProperties message. Also converts values to other types if specified.
             * @param message ModifyWorkflowProperties
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.ModifyWorkflowProperties, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ModifyWorkflowProperties to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ModifyWorkflowProperties
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an UpdateResponse. */
        interface IUpdateResponse {

            /** The protocol message instance ID */
            protocolInstanceId?: (string|null);

            /**
             * Must be sent if the update's validator has passed (or lang was not asked to run it, and
             * thus should be considered already-accepted, allowing lang to always send the same
             * sequence on replay).
             */
            accepted?: (google.protobuf.IEmpty|null);

            /**
             * Must be sent if the update's validator does not pass, or after acceptance if the update
             * handler fails.
             */
            rejected?: (temporal.api.failure.v1.IFailure|null);

            /** Must be sent once the update handler completes successfully. */
            completed?: (temporal.api.common.v1.IPayload|null);
        }

        /**
         * A reply to a `DoUpdate` job - lang must run the update's validator if told to, and then
         * immediately run the handler, if the update was accepted.
         *
         * There must always be an accepted or rejected response immediately, in the same activation as
         * this job, to indicate the result of the validator. Accepted for ran and accepted or skipped, or
         * rejected for rejected.
         *
         * Then, in the same or any subsequent activation, after the update handler has completed, respond
         * with completed or rejected as appropriate for the result of the handler.
         */
        class UpdateResponse implements IUpdateResponse {

            /**
             * Constructs a new UpdateResponse.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IUpdateResponse);

            /** The protocol message instance ID */
            public protocolInstanceId: string;

            /**
             * Must be sent if the update's validator has passed (or lang was not asked to run it, and
             * thus should be considered already-accepted, allowing lang to always send the same
             * sequence on replay).
             */
            public accepted?: (google.protobuf.IEmpty|null);

            /**
             * Must be sent if the update's validator does not pass, or after acceptance if the update
             * handler fails.
             */
            public rejected?: (temporal.api.failure.v1.IFailure|null);

            /** Must be sent once the update handler completes successfully. */
            public completed?: (temporal.api.common.v1.IPayload|null);

            /** UpdateResponse response. */
            public response?: ("accepted"|"rejected"|"completed");

            /**
             * Creates a new UpdateResponse instance using the specified properties.
             * @param [properties] Properties to set
             * @returns UpdateResponse instance
             */
            public static create(properties?: coresdk.workflow_commands.IUpdateResponse): coresdk.workflow_commands.UpdateResponse;

            /**
             * Encodes the specified UpdateResponse message. Does not implicitly {@link coresdk.workflow_commands.UpdateResponse.verify|verify} messages.
             * @param message UpdateResponse message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IUpdateResponse, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified UpdateResponse message, length delimited. Does not implicitly {@link coresdk.workflow_commands.UpdateResponse.verify|verify} messages.
             * @param message UpdateResponse message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IUpdateResponse, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an UpdateResponse message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns UpdateResponse
             * @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): coresdk.workflow_commands.UpdateResponse;

            /**
             * Decodes an UpdateResponse message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns UpdateResponse
             * @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)): coresdk.workflow_commands.UpdateResponse;

            /**
             * Creates an UpdateResponse message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns UpdateResponse
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.UpdateResponse;

            /**
             * Creates a plain object from an UpdateResponse message. Also converts values to other types if specified.
             * @param message UpdateResponse
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.UpdateResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this UpdateResponse to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for UpdateResponse
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ScheduleNexusOperation. */
        interface IScheduleNexusOperation {

            /** Lang's incremental sequence number, used as the operation identifier */
            seq?: (number|null);

            /** Endpoint name, must exist in the endpoint registry or this command will fail. */
            endpoint?: (string|null);

            /** Service name. */
            service?: (string|null);

            /** Operation name. */
            operation?: (string|null);

            /**
             * Input for the operation. The server converts this into Nexus request content and the
             * appropriate content headers internally when sending the StartOperation request. On the
             * handler side, if it is also backed by Temporal, the content is transformed back to the
             * original Payload sent in this command.
             */
            input?: (temporal.api.common.v1.IPayload|null);

            /**
             * Schedule-to-close timeout for this operation.
             * Indicates how long the caller is willing to wait for operation completion.
             * Calls are retried internally by the server.
             */
            scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

            /**
             * Header to attach to the Nexus request.
             * Users are responsible for encrypting sensitive data in this header as it is stored in
             * workflow history and transmitted to external services as-is. This is useful for propagating
             * tracing information. Note these headers are not the same as Temporal headers on internal
             * activities and child workflows, these are transmitted to Nexus operations that may be
             * external and are not traditional payloads.
             */
            nexusHeader?: ({ [k: string]: string }|null);

            /** Defines behaviour of the underlying nexus operation when operation cancellation has been requested. */
            cancellationType?: (coresdk.nexus.NexusOperationCancellationType|null);

            /**
             * Schedule-to-start timeout for this operation.
             * Indicates how long the caller is willing to wait for the operation to be started (or completed if synchronous)
             * by the handler. If the operation is not started within this timeout, it will fail with
             * TIMEOUT_TYPE_SCHEDULE_TO_START.
             * If not set or zero, no schedule-to-start timeout is enforced.
             */
            scheduleToStartTimeout?: (google.protobuf.IDuration|null);

            /**
             * Start-to-close timeout for this operation.
             * Indicates how long the caller is willing to wait for an asynchronous operation to complete after it has been
             * started. If the operation does not complete within this timeout after starting, it will fail with
             * TIMEOUT_TYPE_START_TO_CLOSE.
             * Only applies to asynchronous operations. Synchronous operations ignore this timeout.
             * If not set or zero, no start-to-close timeout is enforced.
             */
            startToCloseTimeout?: (google.protobuf.IDuration|null);
        }

        /** A request to begin a Nexus operation */
        class ScheduleNexusOperation implements IScheduleNexusOperation {

            /**
             * Constructs a new ScheduleNexusOperation.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IScheduleNexusOperation);

            /** Lang's incremental sequence number, used as the operation identifier */
            public seq: number;

            /** Endpoint name, must exist in the endpoint registry or this command will fail. */
            public endpoint: string;

            /** Service name. */
            public service: string;

            /** Operation name. */
            public operation: string;

            /**
             * Input for the operation. The server converts this into Nexus request content and the
             * appropriate content headers internally when sending the StartOperation request. On the
             * handler side, if it is also backed by Temporal, the content is transformed back to the
             * original Payload sent in this command.
             */
            public input?: (temporal.api.common.v1.IPayload|null);

            /**
             * Schedule-to-close timeout for this operation.
             * Indicates how long the caller is willing to wait for operation completion.
             * Calls are retried internally by the server.
             */
            public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

            /**
             * Header to attach to the Nexus request.
             * Users are responsible for encrypting sensitive data in this header as it is stored in
             * workflow history and transmitted to external services as-is. This is useful for propagating
             * tracing information. Note these headers are not the same as Temporal headers on internal
             * activities and child workflows, these are transmitted to Nexus operations that may be
             * external and are not traditional payloads.
             */
            public nexusHeader: { [k: string]: string };

            /** Defines behaviour of the underlying nexus operation when operation cancellation has been requested. */
            public cancellationType: coresdk.nexus.NexusOperationCancellationType;

            /**
             * Schedule-to-start timeout for this operation.
             * Indicates how long the caller is willing to wait for the operation to be started (or completed if synchronous)
             * by the handler. If the operation is not started within this timeout, it will fail with
             * TIMEOUT_TYPE_SCHEDULE_TO_START.
             * If not set or zero, no schedule-to-start timeout is enforced.
             */
            public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

            /**
             * Start-to-close timeout for this operation.
             * Indicates how long the caller is willing to wait for an asynchronous operation to complete after it has been
             * started. If the operation does not complete within this timeout after starting, it will fail with
             * TIMEOUT_TYPE_START_TO_CLOSE.
             * Only applies to asynchronous operations. Synchronous operations ignore this timeout.
             * If not set or zero, no start-to-close timeout is enforced.
             */
            public startToCloseTimeout?: (google.protobuf.IDuration|null);

            /**
             * Creates a new ScheduleNexusOperation instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ScheduleNexusOperation instance
             */
            public static create(properties?: coresdk.workflow_commands.IScheduleNexusOperation): coresdk.workflow_commands.ScheduleNexusOperation;

            /**
             * Encodes the specified ScheduleNexusOperation message. Does not implicitly {@link coresdk.workflow_commands.ScheduleNexusOperation.verify|verify} messages.
             * @param message ScheduleNexusOperation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IScheduleNexusOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ScheduleNexusOperation message, length delimited. Does not implicitly {@link coresdk.workflow_commands.ScheduleNexusOperation.verify|verify} messages.
             * @param message ScheduleNexusOperation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IScheduleNexusOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ScheduleNexusOperation message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ScheduleNexusOperation
             * @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): coresdk.workflow_commands.ScheduleNexusOperation;

            /**
             * Decodes a ScheduleNexusOperation message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ScheduleNexusOperation
             * @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)): coresdk.workflow_commands.ScheduleNexusOperation;

            /**
             * Creates a ScheduleNexusOperation message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ScheduleNexusOperation
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.ScheduleNexusOperation;

            /**
             * Creates a plain object from a ScheduleNexusOperation message. Also converts values to other types if specified.
             * @param message ScheduleNexusOperation
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.ScheduleNexusOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ScheduleNexusOperation to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ScheduleNexusOperation
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a RequestCancelNexusOperation. */
        interface IRequestCancelNexusOperation {

            /** Lang's incremental sequence number as passed to `ScheduleNexusOperation` */
            seq?: (number|null);
        }

        /** Request cancellation of a nexus operation started via `ScheduleNexusOperation` */
        class RequestCancelNexusOperation implements IRequestCancelNexusOperation {

            /**
             * Constructs a new RequestCancelNexusOperation.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_commands.IRequestCancelNexusOperation);

            /** Lang's incremental sequence number as passed to `ScheduleNexusOperation` */
            public seq: number;

            /**
             * Creates a new RequestCancelNexusOperation instance using the specified properties.
             * @param [properties] Properties to set
             * @returns RequestCancelNexusOperation instance
             */
            public static create(properties?: coresdk.workflow_commands.IRequestCancelNexusOperation): coresdk.workflow_commands.RequestCancelNexusOperation;

            /**
             * Encodes the specified RequestCancelNexusOperation message. Does not implicitly {@link coresdk.workflow_commands.RequestCancelNexusOperation.verify|verify} messages.
             * @param message RequestCancelNexusOperation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_commands.IRequestCancelNexusOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified RequestCancelNexusOperation message, length delimited. Does not implicitly {@link coresdk.workflow_commands.RequestCancelNexusOperation.verify|verify} messages.
             * @param message RequestCancelNexusOperation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_commands.IRequestCancelNexusOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a RequestCancelNexusOperation message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns RequestCancelNexusOperation
             * @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): coresdk.workflow_commands.RequestCancelNexusOperation;

            /**
             * Decodes a RequestCancelNexusOperation message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns RequestCancelNexusOperation
             * @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)): coresdk.workflow_commands.RequestCancelNexusOperation;

            /**
             * Creates a RequestCancelNexusOperation message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns RequestCancelNexusOperation
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_commands.RequestCancelNexusOperation;

            /**
             * Creates a plain object from a RequestCancelNexusOperation message. Also converts values to other types if specified.
             * @param message RequestCancelNexusOperation
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_commands.RequestCancelNexusOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this RequestCancelNexusOperation to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for RequestCancelNexusOperation
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Namespace workflow_completion. */
    namespace workflow_completion {

        /** Properties of a WorkflowActivationCompletion. */
        interface IWorkflowActivationCompletion {

            /** The run id from the workflow activation you are completing */
            runId?: (string|null);

            /** WorkflowActivationCompletion successful */
            successful?: (coresdk.workflow_completion.ISuccess|null);

            /** WorkflowActivationCompletion failed */
            failed?: (coresdk.workflow_completion.IFailure|null);
        }

        /** Result of a single workflow activation, reported from lang to core */
        class WorkflowActivationCompletion implements IWorkflowActivationCompletion {

            /**
             * Constructs a new WorkflowActivationCompletion.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_completion.IWorkflowActivationCompletion);

            /** The run id from the workflow activation you are completing */
            public runId: string;

            /** WorkflowActivationCompletion successful. */
            public successful?: (coresdk.workflow_completion.ISuccess|null);

            /** WorkflowActivationCompletion failed. */
            public failed?: (coresdk.workflow_completion.IFailure|null);

            /** WorkflowActivationCompletion status. */
            public status?: ("successful"|"failed");

            /**
             * Creates a new WorkflowActivationCompletion instance using the specified properties.
             * @param [properties] Properties to set
             * @returns WorkflowActivationCompletion instance
             */
            public static create(properties?: coresdk.workflow_completion.IWorkflowActivationCompletion): coresdk.workflow_completion.WorkflowActivationCompletion;

            /**
             * Encodes the specified WorkflowActivationCompletion message. Does not implicitly {@link coresdk.workflow_completion.WorkflowActivationCompletion.verify|verify} messages.
             * @param message WorkflowActivationCompletion message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_completion.IWorkflowActivationCompletion, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified WorkflowActivationCompletion message, length delimited. Does not implicitly {@link coresdk.workflow_completion.WorkflowActivationCompletion.verify|verify} messages.
             * @param message WorkflowActivationCompletion message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_completion.IWorkflowActivationCompletion, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a WorkflowActivationCompletion message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns WorkflowActivationCompletion
             * @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): coresdk.workflow_completion.WorkflowActivationCompletion;

            /**
             * Decodes a WorkflowActivationCompletion message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns WorkflowActivationCompletion
             * @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)): coresdk.workflow_completion.WorkflowActivationCompletion;

            /**
             * Creates a WorkflowActivationCompletion message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns WorkflowActivationCompletion
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_completion.WorkflowActivationCompletion;

            /**
             * Creates a plain object from a WorkflowActivationCompletion message. Also converts values to other types if specified.
             * @param message WorkflowActivationCompletion
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_completion.WorkflowActivationCompletion, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this WorkflowActivationCompletion to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for WorkflowActivationCompletion
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Success. */
        interface ISuccess {

            /** A list of commands to send back to the temporal server */
            commands?: (coresdk.workflow_commands.IWorkflowCommand[]|null);

            /** Any internal flags which the lang SDK used in the processing of this activation */
            usedInternalFlags?: (number[]|null);

            /** The versioning behavior this workflow is currently using */
            versioningBehavior?: (temporal.api.enums.v1.VersioningBehavior|null);
        }

        /** Successful workflow activation with a list of commands generated by the workflow execution */
        class Success implements ISuccess {

            /**
             * Constructs a new Success.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_completion.ISuccess);

            /** A list of commands to send back to the temporal server */
            public commands: coresdk.workflow_commands.IWorkflowCommand[];

            /** Any internal flags which the lang SDK used in the processing of this activation */
            public usedInternalFlags: number[];

            /** The versioning behavior this workflow is currently using */
            public versioningBehavior: temporal.api.enums.v1.VersioningBehavior;

            /**
             * Creates a new Success instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Success instance
             */
            public static create(properties?: coresdk.workflow_completion.ISuccess): coresdk.workflow_completion.Success;

            /**
             * Encodes the specified Success message. Does not implicitly {@link coresdk.workflow_completion.Success.verify|verify} messages.
             * @param message Success message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_completion.ISuccess, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Success message, length delimited. Does not implicitly {@link coresdk.workflow_completion.Success.verify|verify} messages.
             * @param message Success message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_completion.ISuccess, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Success message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Success
             * @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): coresdk.workflow_completion.Success;

            /**
             * Decodes a Success message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Success
             * @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)): coresdk.workflow_completion.Success;

            /**
             * Creates a Success message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Success
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_completion.Success;

            /**
             * Creates a plain object from a Success message. Also converts values to other types if specified.
             * @param message Success
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_completion.Success, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Success to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Success
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Failure. */
        interface IFailure {

            /** Failure failure */
            failure?: (temporal.api.failure.v1.IFailure|null);

            /** Forces overriding the WFT failure cause */
            forceCause?: (temporal.api.enums.v1.WorkflowTaskFailedCause|null);
        }

        /** Failure to activate or execute a workflow */
        class Failure implements IFailure {

            /**
             * Constructs a new Failure.
             * @param [properties] Properties to set
             */
            constructor(properties?: coresdk.workflow_completion.IFailure);

            /** Failure failure. */
            public failure?: (temporal.api.failure.v1.IFailure|null);

            /** Forces overriding the WFT failure cause */
            public forceCause: temporal.api.enums.v1.WorkflowTaskFailedCause;

            /**
             * Creates a new Failure instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Failure instance
             */
            public static create(properties?: coresdk.workflow_completion.IFailure): coresdk.workflow_completion.Failure;

            /**
             * Encodes the specified Failure message. Does not implicitly {@link coresdk.workflow_completion.Failure.verify|verify} messages.
             * @param message Failure message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: coresdk.workflow_completion.IFailure, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Failure message, length delimited. Does not implicitly {@link coresdk.workflow_completion.Failure.verify|verify} messages.
             * @param message Failure message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: coresdk.workflow_completion.IFailure, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Failure message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Failure
             * @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): coresdk.workflow_completion.Failure;

            /**
             * Decodes a Failure message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Failure
             * @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)): coresdk.workflow_completion.Failure;

            /**
             * Creates a Failure message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Failure
             */
            public static fromObject(object: { [k: string]: any }): coresdk.workflow_completion.Failure;

            /**
             * Creates a plain object from a Failure message. Also converts values to other types if specified.
             * @param message Failure
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: coresdk.workflow_completion.Failure, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Failure to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Failure
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }
}

/** Namespace temporal. */
export namespace temporal {

    /** Namespace api. */
    namespace api {

        /** Namespace common. */
        namespace common {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a DataBlob. */
                interface IDataBlob {

                    /** DataBlob encodingType */
                    encodingType?: (temporal.api.enums.v1.EncodingType|null);

                    /** DataBlob data */
                    data?: (Uint8Array|null);
                }

                /** Represents a DataBlob. */
                class DataBlob implements IDataBlob {

                    /**
                     * Constructs a new DataBlob.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IDataBlob);

                    /** DataBlob encodingType. */
                    public encodingType: temporal.api.enums.v1.EncodingType;

                    /** DataBlob data. */
                    public data: Uint8Array;

                    /**
                     * Creates a new DataBlob instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DataBlob instance
                     */
                    public static create(properties?: temporal.api.common.v1.IDataBlob): temporal.api.common.v1.DataBlob;

                    /**
                     * Encodes the specified DataBlob message. Does not implicitly {@link temporal.api.common.v1.DataBlob.verify|verify} messages.
                     * @param message DataBlob message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IDataBlob, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DataBlob message, length delimited. Does not implicitly {@link temporal.api.common.v1.DataBlob.verify|verify} messages.
                     * @param message DataBlob message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IDataBlob, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DataBlob message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DataBlob
                     * @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): temporal.api.common.v1.DataBlob;

                    /**
                     * Decodes a DataBlob message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DataBlob
                     * @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)): temporal.api.common.v1.DataBlob;

                    /**
                     * Creates a DataBlob message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DataBlob
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.DataBlob;

                    /**
                     * Creates a plain object from a DataBlob message. Also converts values to other types if specified.
                     * @param message DataBlob
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.DataBlob, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DataBlob to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DataBlob
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Payloads. */
                interface IPayloads {

                    /** Payloads payloads */
                    payloads?: (temporal.api.common.v1.IPayload[]|null);
                }

                /** See `Payload` */
                class Payloads implements IPayloads {

                    /**
                     * Constructs a new Payloads.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IPayloads);

                    /** Payloads payloads. */
                    public payloads: temporal.api.common.v1.IPayload[];

                    /**
                     * Creates a new Payloads instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Payloads instance
                     */
                    public static create(properties?: temporal.api.common.v1.IPayloads): temporal.api.common.v1.Payloads;

                    /**
                     * Encodes the specified Payloads message. Does not implicitly {@link temporal.api.common.v1.Payloads.verify|verify} messages.
                     * @param message Payloads message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IPayloads, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Payloads message, length delimited. Does not implicitly {@link temporal.api.common.v1.Payloads.verify|verify} messages.
                     * @param message Payloads message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IPayloads, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Payloads message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Payloads
                     * @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): temporal.api.common.v1.Payloads;

                    /**
                     * Decodes a Payloads message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Payloads
                     * @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)): temporal.api.common.v1.Payloads;

                    /**
                     * Creates a Payloads message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Payloads
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Payloads;

                    /**
                     * Creates a plain object from a Payloads message. Also converts values to other types if specified.
                     * @param message Payloads
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.Payloads, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Payloads to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Payloads
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Payload. */
                interface IPayload {

                    /** Payload metadata */
                    metadata?: ({ [k: string]: Uint8Array }|null);

                    /** Payload data */
                    data?: (Uint8Array|null);

                    /** Details about externally stored payloads associated with this payload. */
                    externalPayloads?: (temporal.api.common.v1.Payload.IExternalPayloadDetails[]|null);
                }

                /**
                 * Represents some binary (byte array) data (ex: activity input parameters or workflow result) with
                 * metadata which describes this binary data (format, encoding, encryption, etc). Serialization
                 * of the data may be user-defined.
                 */
                class Payload implements IPayload {

                    /**
                     * Constructs a new Payload.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IPayload);

                    /** Payload metadata. */
                    public metadata: { [k: string]: Uint8Array };

                    /** Payload data. */
                    public data: Uint8Array;

                    /** Details about externally stored payloads associated with this payload. */
                    public externalPayloads: temporal.api.common.v1.Payload.IExternalPayloadDetails[];

                    /**
                     * Creates a new Payload instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Payload instance
                     */
                    public static create(properties?: temporal.api.common.v1.IPayload): temporal.api.common.v1.Payload;

                    /**
                     * Encodes the specified Payload message. Does not implicitly {@link temporal.api.common.v1.Payload.verify|verify} messages.
                     * @param message Payload message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IPayload, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Payload message, length delimited. Does not implicitly {@link temporal.api.common.v1.Payload.verify|verify} messages.
                     * @param message Payload message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IPayload, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Payload message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Payload
                     * @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): temporal.api.common.v1.Payload;

                    /**
                     * Decodes a Payload message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Payload
                     * @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)): temporal.api.common.v1.Payload;

                    /**
                     * Creates a Payload message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Payload
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Payload;

                    /**
                     * Creates a plain object from a Payload message. Also converts values to other types if specified.
                     * @param message Payload
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.Payload, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Payload to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Payload
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Payload {

                    /** Properties of an ExternalPayloadDetails. */
                    interface IExternalPayloadDetails {

                        /** Size in bytes of the externally stored payload */
                        sizeBytes?: (Long|null);
                    }

                    /** Describes an externally stored object referenced by this payload. */
                    class ExternalPayloadDetails implements IExternalPayloadDetails {

                        /**
                         * Constructs a new ExternalPayloadDetails.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.common.v1.Payload.IExternalPayloadDetails);

                        /** Size in bytes of the externally stored payload */
                        public sizeBytes: Long;

                        /**
                         * Creates a new ExternalPayloadDetails instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExternalPayloadDetails instance
                         */
                        public static create(properties?: temporal.api.common.v1.Payload.IExternalPayloadDetails): temporal.api.common.v1.Payload.ExternalPayloadDetails;

                        /**
                         * Encodes the specified ExternalPayloadDetails message. Does not implicitly {@link temporal.api.common.v1.Payload.ExternalPayloadDetails.verify|verify} messages.
                         * @param message ExternalPayloadDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.common.v1.Payload.IExternalPayloadDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExternalPayloadDetails message, length delimited. Does not implicitly {@link temporal.api.common.v1.Payload.ExternalPayloadDetails.verify|verify} messages.
                         * @param message ExternalPayloadDetails message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.common.v1.Payload.IExternalPayloadDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExternalPayloadDetails message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExternalPayloadDetails
                         * @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): temporal.api.common.v1.Payload.ExternalPayloadDetails;

                        /**
                         * Decodes an ExternalPayloadDetails message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExternalPayloadDetails
                         * @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)): temporal.api.common.v1.Payload.ExternalPayloadDetails;

                        /**
                         * Creates an ExternalPayloadDetails message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExternalPayloadDetails
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Payload.ExternalPayloadDetails;

                        /**
                         * Creates a plain object from an ExternalPayloadDetails message. Also converts values to other types if specified.
                         * @param message ExternalPayloadDetails
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.common.v1.Payload.ExternalPayloadDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExternalPayloadDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExternalPayloadDetails
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a SearchAttributes. */
                interface ISearchAttributes {

                    /** SearchAttributes indexedFields */
                    indexedFields?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);
                }

                /**
                 * A user-defined set of *indexed* fields that are used/exposed when listing/searching workflows.
                 * The payload is not serialized in a user-defined way.
                 */
                class SearchAttributes implements ISearchAttributes {

                    /**
                     * Constructs a new SearchAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.ISearchAttributes);

                    /** SearchAttributes indexedFields. */
                    public indexedFields: { [k: string]: temporal.api.common.v1.IPayload };

                    /**
                     * Creates a new SearchAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SearchAttributes instance
                     */
                    public static create(properties?: temporal.api.common.v1.ISearchAttributes): temporal.api.common.v1.SearchAttributes;

                    /**
                     * Encodes the specified SearchAttributes message. Does not implicitly {@link temporal.api.common.v1.SearchAttributes.verify|verify} messages.
                     * @param message SearchAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.ISearchAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SearchAttributes message, length delimited. Does not implicitly {@link temporal.api.common.v1.SearchAttributes.verify|verify} messages.
                     * @param message SearchAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.ISearchAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SearchAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SearchAttributes
                     * @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): temporal.api.common.v1.SearchAttributes;

                    /**
                     * Decodes a SearchAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SearchAttributes
                     * @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)): temporal.api.common.v1.SearchAttributes;

                    /**
                     * Creates a SearchAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SearchAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.SearchAttributes;

                    /**
                     * Creates a plain object from a SearchAttributes message. Also converts values to other types if specified.
                     * @param message SearchAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.SearchAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SearchAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SearchAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Memo. */
                interface IMemo {

                    /** Memo fields */
                    fields?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);
                }

                /** A user-defined set of *unindexed* fields that are exposed when listing/searching workflows */
                class Memo implements IMemo {

                    /**
                     * Constructs a new Memo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IMemo);

                    /** Memo fields. */
                    public fields: { [k: string]: temporal.api.common.v1.IPayload };

                    /**
                     * Creates a new Memo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Memo instance
                     */
                    public static create(properties?: temporal.api.common.v1.IMemo): temporal.api.common.v1.Memo;

                    /**
                     * Encodes the specified Memo message. Does not implicitly {@link temporal.api.common.v1.Memo.verify|verify} messages.
                     * @param message Memo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IMemo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Memo message, length delimited. Does not implicitly {@link temporal.api.common.v1.Memo.verify|verify} messages.
                     * @param message Memo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IMemo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Memo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Memo
                     * @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): temporal.api.common.v1.Memo;

                    /**
                     * Decodes a Memo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Memo
                     * @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)): temporal.api.common.v1.Memo;

                    /**
                     * Creates a Memo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Memo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Memo;

                    /**
                     * Creates a plain object from a Memo message. Also converts values to other types if specified.
                     * @param message Memo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.Memo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Memo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Memo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Header. */
                interface IHeader {

                    /** Header fields */
                    fields?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);
                }

                /**
                 * Contains metadata that can be attached to a variety of requests, like starting a workflow, and
                 * can be propagated between, for example, workflows and activities.
                 */
                class Header implements IHeader {

                    /**
                     * Constructs a new Header.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IHeader);

                    /** Header fields. */
                    public fields: { [k: string]: temporal.api.common.v1.IPayload };

                    /**
                     * Creates a new Header instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Header instance
                     */
                    public static create(properties?: temporal.api.common.v1.IHeader): temporal.api.common.v1.Header;

                    /**
                     * Encodes the specified Header message. Does not implicitly {@link temporal.api.common.v1.Header.verify|verify} messages.
                     * @param message Header message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IHeader, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Header message, length delimited. Does not implicitly {@link temporal.api.common.v1.Header.verify|verify} messages.
                     * @param message Header message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IHeader, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Header message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Header
                     * @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): temporal.api.common.v1.Header;

                    /**
                     * Decodes a Header message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Header
                     * @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)): temporal.api.common.v1.Header;

                    /**
                     * Creates a Header message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Header
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Header;

                    /**
                     * Creates a plain object from a Header message. Also converts values to other types if specified.
                     * @param message Header
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.Header, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Header to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Header
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecution. */
                interface IWorkflowExecution {

                    /** WorkflowExecution workflowId */
                    workflowId?: (string|null);

                    /** WorkflowExecution runId */
                    runId?: (string|null);
                }

                /**
                 * Identifies a specific workflow within a namespace. Practically speaking, because run_id is a
                 * uuid, a workflow execution is globally unique. Note that many commands allow specifying an empty
                 * run id as a way of saying "target the latest run of the workflow".
                 */
                class WorkflowExecution implements IWorkflowExecution {

                    /**
                     * Constructs a new WorkflowExecution.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IWorkflowExecution);

                    /** WorkflowExecution workflowId. */
                    public workflowId: string;

                    /** WorkflowExecution runId. */
                    public runId: string;

                    /**
                     * Creates a new WorkflowExecution instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecution instance
                     */
                    public static create(properties?: temporal.api.common.v1.IWorkflowExecution): temporal.api.common.v1.WorkflowExecution;

                    /**
                     * Encodes the specified WorkflowExecution message. Does not implicitly {@link temporal.api.common.v1.WorkflowExecution.verify|verify} messages.
                     * @param message WorkflowExecution message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecution message, length delimited. Does not implicitly {@link temporal.api.common.v1.WorkflowExecution.verify|verify} messages.
                     * @param message WorkflowExecution message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IWorkflowExecution, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecution message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecution
                     * @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): temporal.api.common.v1.WorkflowExecution;

                    /**
                     * Decodes a WorkflowExecution message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecution
                     * @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)): temporal.api.common.v1.WorkflowExecution;

                    /**
                     * Creates a WorkflowExecution message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecution
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.WorkflowExecution;

                    /**
                     * Creates a plain object from a WorkflowExecution message. Also converts values to other types if specified.
                     * @param message WorkflowExecution
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.WorkflowExecution, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecution to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecution
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowType. */
                interface IWorkflowType {

                    /** WorkflowType name */
                    name?: (string|null);
                }

                /**
                 * Represents the identifier used by a workflow author to define the workflow. Typically, the
                 * name of a function. This is sometimes referred to as the workflow's "name"
                 */
                class WorkflowType implements IWorkflowType {

                    /**
                     * Constructs a new WorkflowType.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IWorkflowType);

                    /** WorkflowType name. */
                    public name: string;

                    /**
                     * Creates a new WorkflowType instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowType instance
                     */
                    public static create(properties?: temporal.api.common.v1.IWorkflowType): temporal.api.common.v1.WorkflowType;

                    /**
                     * Encodes the specified WorkflowType message. Does not implicitly {@link temporal.api.common.v1.WorkflowType.verify|verify} messages.
                     * @param message WorkflowType message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IWorkflowType, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowType message, length delimited. Does not implicitly {@link temporal.api.common.v1.WorkflowType.verify|verify} messages.
                     * @param message WorkflowType message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IWorkflowType, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowType message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowType
                     * @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): temporal.api.common.v1.WorkflowType;

                    /**
                     * Decodes a WorkflowType message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowType
                     * @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)): temporal.api.common.v1.WorkflowType;

                    /**
                     * Creates a WorkflowType message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowType
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.WorkflowType;

                    /**
                     * Creates a plain object from a WorkflowType message. Also converts values to other types if specified.
                     * @param message WorkflowType
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.WorkflowType, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowType to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowType
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityType. */
                interface IActivityType {

                    /** ActivityType name */
                    name?: (string|null);
                }

                /**
                 * Represents the identifier used by a activity author to define the activity. Typically, the
                 * name of a function. This is sometimes referred to as the activity's "name"
                 */
                class ActivityType implements IActivityType {

                    /**
                     * Constructs a new ActivityType.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IActivityType);

                    /** ActivityType name. */
                    public name: string;

                    /**
                     * Creates a new ActivityType instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityType instance
                     */
                    public static create(properties?: temporal.api.common.v1.IActivityType): temporal.api.common.v1.ActivityType;

                    /**
                     * Encodes the specified ActivityType message. Does not implicitly {@link temporal.api.common.v1.ActivityType.verify|verify} messages.
                     * @param message ActivityType message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IActivityType, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityType message, length delimited. Does not implicitly {@link temporal.api.common.v1.ActivityType.verify|verify} messages.
                     * @param message ActivityType message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IActivityType, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityType message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityType
                     * @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): temporal.api.common.v1.ActivityType;

                    /**
                     * Decodes an ActivityType message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityType
                     * @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)): temporal.api.common.v1.ActivityType;

                    /**
                     * Creates an ActivityType message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityType
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.ActivityType;

                    /**
                     * Creates a plain object from an ActivityType message. Also converts values to other types if specified.
                     * @param message ActivityType
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.ActivityType, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityType to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityType
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RetryPolicy. */
                interface IRetryPolicy {

                    /** Interval of the first retry. If retryBackoffCoefficient is 1.0 then it is used for all retries. */
                    initialInterval?: (google.protobuf.IDuration|null);

                    /**
                     * Coefficient used to calculate the next retry interval.
                     * The next retry interval is previous interval multiplied by the coefficient.
                     * Must be 1 or larger.
                     */
                    backoffCoefficient?: (number|null);

                    /**
                     * Maximum interval between retries. Exponential backoff leads to interval increase.
                     * This value is the cap of the increase. Default is 100x of the initial interval.
                     */
                    maximumInterval?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum number of attempts. When exceeded the retries stop even if not expired yet.
                     * 1 disables retries. 0 means unlimited (up to the timeouts)
                     */
                    maximumAttempts?: (number|null);

                    /**
                     * Non-Retryable errors types. Will stop retrying if the error type matches this list. Note that
                     * this is not a substring match, the error *type* (not message) must match exactly.
                     */
                    nonRetryableErrorTypes?: (string[]|null);
                }

                /** How retries ought to be handled, usable by both workflows and activities */
                class RetryPolicy implements IRetryPolicy {

                    /**
                     * Constructs a new RetryPolicy.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IRetryPolicy);

                    /** Interval of the first retry. If retryBackoffCoefficient is 1.0 then it is used for all retries. */
                    public initialInterval?: (google.protobuf.IDuration|null);

                    /**
                     * Coefficient used to calculate the next retry interval.
                     * The next retry interval is previous interval multiplied by the coefficient.
                     * Must be 1 or larger.
                     */
                    public backoffCoefficient: number;

                    /**
                     * Maximum interval between retries. Exponential backoff leads to interval increase.
                     * This value is the cap of the increase. Default is 100x of the initial interval.
                     */
                    public maximumInterval?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum number of attempts. When exceeded the retries stop even if not expired yet.
                     * 1 disables retries. 0 means unlimited (up to the timeouts)
                     */
                    public maximumAttempts: number;

                    /**
                     * Non-Retryable errors types. Will stop retrying if the error type matches this list. Note that
                     * this is not a substring match, the error *type* (not message) must match exactly.
                     */
                    public nonRetryableErrorTypes: string[];

                    /**
                     * Creates a new RetryPolicy instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RetryPolicy instance
                     */
                    public static create(properties?: temporal.api.common.v1.IRetryPolicy): temporal.api.common.v1.RetryPolicy;

                    /**
                     * Encodes the specified RetryPolicy message. Does not implicitly {@link temporal.api.common.v1.RetryPolicy.verify|verify} messages.
                     * @param message RetryPolicy message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IRetryPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RetryPolicy message, length delimited. Does not implicitly {@link temporal.api.common.v1.RetryPolicy.verify|verify} messages.
                     * @param message RetryPolicy message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IRetryPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RetryPolicy message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RetryPolicy
                     * @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): temporal.api.common.v1.RetryPolicy;

                    /**
                     * Decodes a RetryPolicy message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RetryPolicy
                     * @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)): temporal.api.common.v1.RetryPolicy;

                    /**
                     * Creates a RetryPolicy message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RetryPolicy
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.RetryPolicy;

                    /**
                     * Creates a plain object from a RetryPolicy message. Also converts values to other types if specified.
                     * @param message RetryPolicy
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.RetryPolicy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RetryPolicy to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RetryPolicy
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MeteringMetadata. */
                interface IMeteringMetadata {

                    /**
                     * Count of local activities which have begun an execution attempt during this workflow task,
                     * and whose first attempt occurred in some previous task. This is used for metering
                     * purposes, and does not affect workflow state.
                     *
                     * (-- api-linter: core::0141::forbidden-types=disabled
                     * aip.dev/not-precedent: Negative values make no sense to represent. --)
                     */
                    nonfirstLocalActivityExecutionAttempts?: (number|null);
                }

                /** Metadata relevant for metering purposes */
                class MeteringMetadata implements IMeteringMetadata {

                    /**
                     * Constructs a new MeteringMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IMeteringMetadata);

                    /**
                     * Count of local activities which have begun an execution attempt during this workflow task,
                     * and whose first attempt occurred in some previous task. This is used for metering
                     * purposes, and does not affect workflow state.
                     *
                     * (-- api-linter: core::0141::forbidden-types=disabled
                     * aip.dev/not-precedent: Negative values make no sense to represent. --)
                     */
                    public nonfirstLocalActivityExecutionAttempts: number;

                    /**
                     * Creates a new MeteringMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MeteringMetadata instance
                     */
                    public static create(properties?: temporal.api.common.v1.IMeteringMetadata): temporal.api.common.v1.MeteringMetadata;

                    /**
                     * Encodes the specified MeteringMetadata message. Does not implicitly {@link temporal.api.common.v1.MeteringMetadata.verify|verify} messages.
                     * @param message MeteringMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IMeteringMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MeteringMetadata message, length delimited. Does not implicitly {@link temporal.api.common.v1.MeteringMetadata.verify|verify} messages.
                     * @param message MeteringMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IMeteringMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MeteringMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MeteringMetadata
                     * @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): temporal.api.common.v1.MeteringMetadata;

                    /**
                     * Decodes a MeteringMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MeteringMetadata
                     * @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)): temporal.api.common.v1.MeteringMetadata;

                    /**
                     * Creates a MeteringMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MeteringMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.MeteringMetadata;

                    /**
                     * Creates a plain object from a MeteringMetadata message. Also converts values to other types if specified.
                     * @param message MeteringMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.MeteringMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MeteringMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MeteringMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkerVersionStamp. */
                interface IWorkerVersionStamp {

                    /**
                     * An opaque whole-worker identifier. Replaces the deprecated `binary_checksum` field when this
                     * message is included in requests which previously used that.
                     */
                    buildId?: (string|null);

                    /**
                     * If set, the worker is opting in to worker versioning. Otherwise, this is used only as a
                     * marker for workflow reset points and the BuildIDs search attribute.
                     */
                    useVersioning?: (boolean|null);
                }

                /**
                 * Deprecated. This message is replaced with `Deployment` and `VersioningBehavior`.
                 * Identifies the version(s) of a worker that processed a task
                 */
                class WorkerVersionStamp implements IWorkerVersionStamp {

                    /**
                     * Constructs a new WorkerVersionStamp.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IWorkerVersionStamp);

                    /**
                     * An opaque whole-worker identifier. Replaces the deprecated `binary_checksum` field when this
                     * message is included in requests which previously used that.
                     */
                    public buildId: string;

                    /**
                     * If set, the worker is opting in to worker versioning. Otherwise, this is used only as a
                     * marker for workflow reset points and the BuildIDs search attribute.
                     */
                    public useVersioning: boolean;

                    /**
                     * Creates a new WorkerVersionStamp instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerVersionStamp instance
                     */
                    public static create(properties?: temporal.api.common.v1.IWorkerVersionStamp): temporal.api.common.v1.WorkerVersionStamp;

                    /**
                     * Encodes the specified WorkerVersionStamp message. Does not implicitly {@link temporal.api.common.v1.WorkerVersionStamp.verify|verify} messages.
                     * @param message WorkerVersionStamp message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IWorkerVersionStamp, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerVersionStamp message, length delimited. Does not implicitly {@link temporal.api.common.v1.WorkerVersionStamp.verify|verify} messages.
                     * @param message WorkerVersionStamp message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IWorkerVersionStamp, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerVersionStamp message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerVersionStamp
                     * @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): temporal.api.common.v1.WorkerVersionStamp;

                    /**
                     * Decodes a WorkerVersionStamp message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerVersionStamp
                     * @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)): temporal.api.common.v1.WorkerVersionStamp;

                    /**
                     * Creates a WorkerVersionStamp message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerVersionStamp
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.WorkerVersionStamp;

                    /**
                     * Creates a plain object from a WorkerVersionStamp message. Also converts values to other types if specified.
                     * @param message WorkerVersionStamp
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.WorkerVersionStamp, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerVersionStamp to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerVersionStamp
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkerVersionCapabilities. */
                interface IWorkerVersionCapabilities {

                    /** An opaque whole-worker identifier */
                    buildId?: (string|null);

                    /**
                     * If set, the worker is opting in to worker versioning, and wishes to only receive appropriate
                     * tasks.
                     */
                    useVersioning?: (boolean|null);

                    /** Must be sent if user has set a deployment series name (versioning-3). */
                    deploymentSeriesName?: (string|null);
                }

                /**
                 * Identifies the version that a worker is compatible with when polling or identifying itself,
                 * and whether or not this worker is opting into the build-id based versioning feature. This is
                 * used by matching to determine which workers ought to receive what tasks.
                 * Deprecated. Use WorkerDeploymentOptions instead.
                 */
                class WorkerVersionCapabilities implements IWorkerVersionCapabilities {

                    /**
                     * Constructs a new WorkerVersionCapabilities.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IWorkerVersionCapabilities);

                    /** An opaque whole-worker identifier */
                    public buildId: string;

                    /**
                     * If set, the worker is opting in to worker versioning, and wishes to only receive appropriate
                     * tasks.
                     */
                    public useVersioning: boolean;

                    /** Must be sent if user has set a deployment series name (versioning-3). */
                    public deploymentSeriesName: string;

                    /**
                     * Creates a new WorkerVersionCapabilities instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerVersionCapabilities instance
                     */
                    public static create(properties?: temporal.api.common.v1.IWorkerVersionCapabilities): temporal.api.common.v1.WorkerVersionCapabilities;

                    /**
                     * Encodes the specified WorkerVersionCapabilities message. Does not implicitly {@link temporal.api.common.v1.WorkerVersionCapabilities.verify|verify} messages.
                     * @param message WorkerVersionCapabilities message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IWorkerVersionCapabilities, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerVersionCapabilities message, length delimited. Does not implicitly {@link temporal.api.common.v1.WorkerVersionCapabilities.verify|verify} messages.
                     * @param message WorkerVersionCapabilities message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IWorkerVersionCapabilities, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerVersionCapabilities message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerVersionCapabilities
                     * @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): temporal.api.common.v1.WorkerVersionCapabilities;

                    /**
                     * Decodes a WorkerVersionCapabilities message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerVersionCapabilities
                     * @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)): temporal.api.common.v1.WorkerVersionCapabilities;

                    /**
                     * Creates a WorkerVersionCapabilities message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerVersionCapabilities
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.WorkerVersionCapabilities;

                    /**
                     * Creates a plain object from a WorkerVersionCapabilities message. Also converts values to other types if specified.
                     * @param message WorkerVersionCapabilities
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.WorkerVersionCapabilities, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerVersionCapabilities to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerVersionCapabilities
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResetOptions. */
                interface IResetOptions {

                    /** Resets to the first workflow task completed or started event. */
                    firstWorkflowTask?: (google.protobuf.IEmpty|null);

                    /** Resets to the last workflow task completed or started event. */
                    lastWorkflowTask?: (google.protobuf.IEmpty|null);

                    /**
                     * The id of a specific `WORKFLOW_TASK_COMPLETED`,`WORKFLOW_TASK_TIMED_OUT`, `WORKFLOW_TASK_FAILED`, or
                     * `WORKFLOW_TASK_STARTED` event to reset to.
                     * Note that this option doesn't make sense when used as part of a batch request.
                     */
                    workflowTaskId?: (Long|null);

                    /**
                     * Resets to the first workflow task processed by this build id.
                     * If the workflow was not processed by the build id, or the workflow task can't be
                     * determined, no reset will be performed.
                     * Note that by default, this reset is allowed to be to a prior run in a chain of
                     * continue-as-new.
                     */
                    buildId?: (string|null);

                    /**
                     * Deprecated. Use `options`.
                     * Default: RESET_REAPPLY_TYPE_SIGNAL
                     */
                    resetReapplyType?: (temporal.api.enums.v1.ResetReapplyType|null);

                    /**
                     * If true, limit the reset to only within the current run. (Applies to build_id targets and
                     * possibly others in the future.)
                     */
                    currentRunOnly?: (boolean|null);

                    /** Event types not to be reapplied */
                    resetReapplyExcludeTypes?: (temporal.api.enums.v1.ResetReapplyExcludeType[]|null);
                }

                /**
                 * Describes where and how to reset a workflow, used for batch reset currently
                 * and may be used for single-workflow reset later.
                 */
                class ResetOptions implements IResetOptions {

                    /**
                     * Constructs a new ResetOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IResetOptions);

                    /** Resets to the first workflow task completed or started event. */
                    public firstWorkflowTask?: (google.protobuf.IEmpty|null);

                    /** Resets to the last workflow task completed or started event. */
                    public lastWorkflowTask?: (google.protobuf.IEmpty|null);

                    /**
                     * The id of a specific `WORKFLOW_TASK_COMPLETED`,`WORKFLOW_TASK_TIMED_OUT`, `WORKFLOW_TASK_FAILED`, or
                     * `WORKFLOW_TASK_STARTED` event to reset to.
                     * Note that this option doesn't make sense when used as part of a batch request.
                     */
                    public workflowTaskId?: (Long|null);

                    /**
                     * Resets to the first workflow task processed by this build id.
                     * If the workflow was not processed by the build id, or the workflow task can't be
                     * determined, no reset will be performed.
                     * Note that by default, this reset is allowed to be to a prior run in a chain of
                     * continue-as-new.
                     */
                    public buildId?: (string|null);

                    /**
                     * Deprecated. Use `options`.
                     * Default: RESET_REAPPLY_TYPE_SIGNAL
                     */
                    public resetReapplyType: temporal.api.enums.v1.ResetReapplyType;

                    /**
                     * If true, limit the reset to only within the current run. (Applies to build_id targets and
                     * possibly others in the future.)
                     */
                    public currentRunOnly: boolean;

                    /** Event types not to be reapplied */
                    public resetReapplyExcludeTypes: temporal.api.enums.v1.ResetReapplyExcludeType[];

                    /** Which workflow task to reset to. */
                    public target?: ("firstWorkflowTask"|"lastWorkflowTask"|"workflowTaskId"|"buildId");

                    /**
                     * Creates a new ResetOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResetOptions instance
                     */
                    public static create(properties?: temporal.api.common.v1.IResetOptions): temporal.api.common.v1.ResetOptions;

                    /**
                     * Encodes the specified ResetOptions message. Does not implicitly {@link temporal.api.common.v1.ResetOptions.verify|verify} messages.
                     * @param message ResetOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IResetOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResetOptions message, length delimited. Does not implicitly {@link temporal.api.common.v1.ResetOptions.verify|verify} messages.
                     * @param message ResetOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IResetOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResetOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResetOptions
                     * @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): temporal.api.common.v1.ResetOptions;

                    /**
                     * Decodes a ResetOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResetOptions
                     * @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)): temporal.api.common.v1.ResetOptions;

                    /**
                     * Creates a ResetOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResetOptions
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.ResetOptions;

                    /**
                     * Creates a plain object from a ResetOptions message. Also converts values to other types if specified.
                     * @param message ResetOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.ResetOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResetOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResetOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Callback. */
                interface ICallback {

                    /** Callback nexus */
                    nexus?: (temporal.api.common.v1.Callback.INexus|null);

                    /** Callback internal */
                    internal?: (temporal.api.common.v1.Callback.IInternal|null);

                    /**
                     * Links associated with the callback. It can be used to link to underlying resources of the
                     * callback.
                     */
                    links?: (temporal.api.common.v1.ILink[]|null);
                }

                /** Callback to attach to various events in the system, e.g. workflow run completion. */
                class Callback implements ICallback {

                    /**
                     * Constructs a new Callback.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.ICallback);

                    /** Callback nexus. */
                    public nexus?: (temporal.api.common.v1.Callback.INexus|null);

                    /** Callback internal. */
                    public internal?: (temporal.api.common.v1.Callback.IInternal|null);

                    /**
                     * Links associated with the callback. It can be used to link to underlying resources of the
                     * callback.
                     */
                    public links: temporal.api.common.v1.ILink[];

                    /** Callback variant. */
                    public variant?: ("nexus"|"internal");

                    /**
                     * Creates a new Callback instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Callback instance
                     */
                    public static create(properties?: temporal.api.common.v1.ICallback): temporal.api.common.v1.Callback;

                    /**
                     * Encodes the specified Callback message. Does not implicitly {@link temporal.api.common.v1.Callback.verify|verify} messages.
                     * @param message Callback message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.ICallback, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Callback message, length delimited. Does not implicitly {@link temporal.api.common.v1.Callback.verify|verify} messages.
                     * @param message Callback message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.ICallback, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Callback message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Callback
                     * @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): temporal.api.common.v1.Callback;

                    /**
                     * Decodes a Callback message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Callback
                     * @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)): temporal.api.common.v1.Callback;

                    /**
                     * Creates a Callback message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Callback
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Callback;

                    /**
                     * Creates a plain object from a Callback message. Also converts values to other types if specified.
                     * @param message Callback
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.Callback, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Callback to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Callback
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Callback {

                    /** Properties of a Nexus. */
                    interface INexus {

                        /** Callback URL. */
                        url?: (string|null);

                        /** Header to attach to callback request. */
                        header?: ({ [k: string]: string }|null);
                    }

                    /** Represents a Nexus. */
                    class Nexus implements INexus {

                        /**
                         * Constructs a new Nexus.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.common.v1.Callback.INexus);

                        /** Callback URL. */
                        public url: string;

                        /** Header to attach to callback request. */
                        public header: { [k: string]: string };

                        /**
                         * Creates a new Nexus instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Nexus instance
                         */
                        public static create(properties?: temporal.api.common.v1.Callback.INexus): temporal.api.common.v1.Callback.Nexus;

                        /**
                         * Encodes the specified Nexus message. Does not implicitly {@link temporal.api.common.v1.Callback.Nexus.verify|verify} messages.
                         * @param message Nexus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.common.v1.Callback.INexus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Nexus message, length delimited. Does not implicitly {@link temporal.api.common.v1.Callback.Nexus.verify|verify} messages.
                         * @param message Nexus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.common.v1.Callback.INexus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Nexus message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Nexus
                         * @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): temporal.api.common.v1.Callback.Nexus;

                        /**
                         * Decodes a Nexus message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Nexus
                         * @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)): temporal.api.common.v1.Callback.Nexus;

                        /**
                         * Creates a Nexus message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Nexus
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Callback.Nexus;

                        /**
                         * Creates a plain object from a Nexus message. Also converts values to other types if specified.
                         * @param message Nexus
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.common.v1.Callback.Nexus, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Nexus to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Nexus
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an Internal. */
                    interface IInternal {

                        /** Opaque internal data. */
                        data?: (Uint8Array|null);
                    }

                    /**
                     * Callbacks to be delivered internally within the system.
                     * This variant is not settable in the API and will be rejected by the service with an INVALID_ARGUMENT error.
                     * The only reason that this is exposed is because callbacks are replicated across clusters via the
                     * WorkflowExecutionStarted event, which is defined in the public API.
                     */
                    class Internal implements IInternal {

                        /**
                         * Constructs a new Internal.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.common.v1.Callback.IInternal);

                        /** Opaque internal data. */
                        public data: Uint8Array;

                        /**
                         * Creates a new Internal instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Internal instance
                         */
                        public static create(properties?: temporal.api.common.v1.Callback.IInternal): temporal.api.common.v1.Callback.Internal;

                        /**
                         * Encodes the specified Internal message. Does not implicitly {@link temporal.api.common.v1.Callback.Internal.verify|verify} messages.
                         * @param message Internal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.common.v1.Callback.IInternal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Internal message, length delimited. Does not implicitly {@link temporal.api.common.v1.Callback.Internal.verify|verify} messages.
                         * @param message Internal message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.common.v1.Callback.IInternal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Internal message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Internal
                         * @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): temporal.api.common.v1.Callback.Internal;

                        /**
                         * Decodes an Internal message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Internal
                         * @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)): temporal.api.common.v1.Callback.Internal;

                        /**
                         * Creates an Internal message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Internal
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Callback.Internal;

                        /**
                         * Creates a plain object from an Internal message. Also converts values to other types if specified.
                         * @param message Internal
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.common.v1.Callback.Internal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Internal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Internal
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a Link. */
                interface ILink {

                    /** Link workflowEvent */
                    workflowEvent?: (temporal.api.common.v1.Link.IWorkflowEvent|null);

                    /** Link batchJob */
                    batchJob?: (temporal.api.common.v1.Link.IBatchJob|null);
                }

                /**
                 * Link can be associated with history events. It might contain information about an external entity
                 * related to the history event. For example, workflow A makes a Nexus call that starts workflow B:
                 * in this case, a history event in workflow A could contain a Link to the workflow started event in
                 * workflow B, and vice-versa.
                 */
                class Link implements ILink {

                    /**
                     * Constructs a new Link.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.ILink);

                    /** Link workflowEvent. */
                    public workflowEvent?: (temporal.api.common.v1.Link.IWorkflowEvent|null);

                    /** Link batchJob. */
                    public batchJob?: (temporal.api.common.v1.Link.IBatchJob|null);

                    /** Link variant. */
                    public variant?: ("workflowEvent"|"batchJob");

                    /**
                     * Creates a new Link instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Link instance
                     */
                    public static create(properties?: temporal.api.common.v1.ILink): temporal.api.common.v1.Link;

                    /**
                     * Encodes the specified Link message. Does not implicitly {@link temporal.api.common.v1.Link.verify|verify} messages.
                     * @param message Link message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.ILink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Link message, length delimited. Does not implicitly {@link temporal.api.common.v1.Link.verify|verify} messages.
                     * @param message Link message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.ILink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Link message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Link
                     * @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): temporal.api.common.v1.Link;

                    /**
                     * Decodes a Link message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Link
                     * @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)): temporal.api.common.v1.Link;

                    /**
                     * Creates a Link message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Link
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Link;

                    /**
                     * Creates a plain object from a Link message. Also converts values to other types if specified.
                     * @param message Link
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.Link, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Link to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Link
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Link {

                    /** Properties of a WorkflowEvent. */
                    interface IWorkflowEvent {

                        /** WorkflowEvent namespace */
                        namespace?: (string|null);

                        /** WorkflowEvent workflowId */
                        workflowId?: (string|null);

                        /** WorkflowEvent runId */
                        runId?: (string|null);

                        /** WorkflowEvent eventRef */
                        eventRef?: (temporal.api.common.v1.Link.WorkflowEvent.IEventReference|null);

                        /** WorkflowEvent requestIdRef */
                        requestIdRef?: (temporal.api.common.v1.Link.WorkflowEvent.IRequestIdReference|null);
                    }

                    /** Represents a WorkflowEvent. */
                    class WorkflowEvent implements IWorkflowEvent {

                        /**
                         * Constructs a new WorkflowEvent.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.common.v1.Link.IWorkflowEvent);

                        /** WorkflowEvent namespace. */
                        public namespace: string;

                        /** WorkflowEvent workflowId. */
                        public workflowId: string;

                        /** WorkflowEvent runId. */
                        public runId: string;

                        /** WorkflowEvent eventRef. */
                        public eventRef?: (temporal.api.common.v1.Link.WorkflowEvent.IEventReference|null);

                        /** WorkflowEvent requestIdRef. */
                        public requestIdRef?: (temporal.api.common.v1.Link.WorkflowEvent.IRequestIdReference|null);

                        /**
                         * Additional information about the workflow event.
                         * Eg: the caller workflow can send the history event details that made the Nexus call.
                         */
                        public reference?: ("eventRef"|"requestIdRef");

                        /**
                         * Creates a new WorkflowEvent instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WorkflowEvent instance
                         */
                        public static create(properties?: temporal.api.common.v1.Link.IWorkflowEvent): temporal.api.common.v1.Link.WorkflowEvent;

                        /**
                         * Encodes the specified WorkflowEvent message. Does not implicitly {@link temporal.api.common.v1.Link.WorkflowEvent.verify|verify} messages.
                         * @param message WorkflowEvent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.common.v1.Link.IWorkflowEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WorkflowEvent message, length delimited. Does not implicitly {@link temporal.api.common.v1.Link.WorkflowEvent.verify|verify} messages.
                         * @param message WorkflowEvent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.common.v1.Link.IWorkflowEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WorkflowEvent message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WorkflowEvent
                         * @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): temporal.api.common.v1.Link.WorkflowEvent;

                        /**
                         * Decodes a WorkflowEvent message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WorkflowEvent
                         * @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)): temporal.api.common.v1.Link.WorkflowEvent;

                        /**
                         * Creates a WorkflowEvent message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WorkflowEvent
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Link.WorkflowEvent;

                        /**
                         * Creates a plain object from a WorkflowEvent message. Also converts values to other types if specified.
                         * @param message WorkflowEvent
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.common.v1.Link.WorkflowEvent, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WorkflowEvent to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WorkflowEvent
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace WorkflowEvent {

                        /** Properties of an EventReference. */
                        interface IEventReference {

                            /** EventReference eventId */
                            eventId?: (Long|null);

                            /** EventReference eventType */
                            eventType?: (temporal.api.enums.v1.EventType|null);
                        }

                        /** EventReference is a direct reference to a history event through the event ID. */
                        class EventReference implements IEventReference {

                            /**
                             * Constructs a new EventReference.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: temporal.api.common.v1.Link.WorkflowEvent.IEventReference);

                            /** EventReference eventId. */
                            public eventId: Long;

                            /** EventReference eventType. */
                            public eventType: temporal.api.enums.v1.EventType;

                            /**
                             * Creates a new EventReference instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns EventReference instance
                             */
                            public static create(properties?: temporal.api.common.v1.Link.WorkflowEvent.IEventReference): temporal.api.common.v1.Link.WorkflowEvent.EventReference;

                            /**
                             * Encodes the specified EventReference message. Does not implicitly {@link temporal.api.common.v1.Link.WorkflowEvent.EventReference.verify|verify} messages.
                             * @param message EventReference message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: temporal.api.common.v1.Link.WorkflowEvent.IEventReference, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified EventReference message, length delimited. Does not implicitly {@link temporal.api.common.v1.Link.WorkflowEvent.EventReference.verify|verify} messages.
                             * @param message EventReference message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: temporal.api.common.v1.Link.WorkflowEvent.IEventReference, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an EventReference message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns EventReference
                             * @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): temporal.api.common.v1.Link.WorkflowEvent.EventReference;

                            /**
                             * Decodes an EventReference message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns EventReference
                             * @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)): temporal.api.common.v1.Link.WorkflowEvent.EventReference;

                            /**
                             * Creates an EventReference message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns EventReference
                             */
                            public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Link.WorkflowEvent.EventReference;

                            /**
                             * Creates a plain object from an EventReference message. Also converts values to other types if specified.
                             * @param message EventReference
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: temporal.api.common.v1.Link.WorkflowEvent.EventReference, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this EventReference to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for EventReference
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a RequestIdReference. */
                        interface IRequestIdReference {

                            /** RequestIdReference requestId */
                            requestId?: (string|null);

                            /** RequestIdReference eventType */
                            eventType?: (temporal.api.enums.v1.EventType|null);
                        }

                        /** RequestIdReference is a indirect reference to a history event through the request ID. */
                        class RequestIdReference implements IRequestIdReference {

                            /**
                             * Constructs a new RequestIdReference.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: temporal.api.common.v1.Link.WorkflowEvent.IRequestIdReference);

                            /** RequestIdReference requestId. */
                            public requestId: string;

                            /** RequestIdReference eventType. */
                            public eventType: temporal.api.enums.v1.EventType;

                            /**
                             * Creates a new RequestIdReference instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RequestIdReference instance
                             */
                            public static create(properties?: temporal.api.common.v1.Link.WorkflowEvent.IRequestIdReference): temporal.api.common.v1.Link.WorkflowEvent.RequestIdReference;

                            /**
                             * Encodes the specified RequestIdReference message. Does not implicitly {@link temporal.api.common.v1.Link.WorkflowEvent.RequestIdReference.verify|verify} messages.
                             * @param message RequestIdReference message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: temporal.api.common.v1.Link.WorkflowEvent.IRequestIdReference, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RequestIdReference message, length delimited. Does not implicitly {@link temporal.api.common.v1.Link.WorkflowEvent.RequestIdReference.verify|verify} messages.
                             * @param message RequestIdReference message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: temporal.api.common.v1.Link.WorkflowEvent.IRequestIdReference, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RequestIdReference message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RequestIdReference
                             * @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): temporal.api.common.v1.Link.WorkflowEvent.RequestIdReference;

                            /**
                             * Decodes a RequestIdReference message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RequestIdReference
                             * @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)): temporal.api.common.v1.Link.WorkflowEvent.RequestIdReference;

                            /**
                             * Creates a RequestIdReference message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RequestIdReference
                             */
                            public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Link.WorkflowEvent.RequestIdReference;

                            /**
                             * Creates a plain object from a RequestIdReference message. Also converts values to other types if specified.
                             * @param message RequestIdReference
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: temporal.api.common.v1.Link.WorkflowEvent.RequestIdReference, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RequestIdReference to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RequestIdReference
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a BatchJob. */
                    interface IBatchJob {

                        /** BatchJob jobId */
                        jobId?: (string|null);
                    }

                    /**
                     * A link to a built-in batch job.
                     * Batch jobs can be used to perform operations on a set of workflows (e.g. terminate, signal, cancel, etc).
                     * This link can be put on workflow history events generated by actions taken by a batch job.
                     */
                    class BatchJob implements IBatchJob {

                        /**
                         * Constructs a new BatchJob.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.common.v1.Link.IBatchJob);

                        /** BatchJob jobId. */
                        public jobId: string;

                        /**
                         * Creates a new BatchJob instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BatchJob instance
                         */
                        public static create(properties?: temporal.api.common.v1.Link.IBatchJob): temporal.api.common.v1.Link.BatchJob;

                        /**
                         * Encodes the specified BatchJob message. Does not implicitly {@link temporal.api.common.v1.Link.BatchJob.verify|verify} messages.
                         * @param message BatchJob message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.common.v1.Link.IBatchJob, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BatchJob message, length delimited. Does not implicitly {@link temporal.api.common.v1.Link.BatchJob.verify|verify} messages.
                         * @param message BatchJob message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.common.v1.Link.IBatchJob, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BatchJob message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BatchJob
                         * @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): temporal.api.common.v1.Link.BatchJob;

                        /**
                         * Decodes a BatchJob message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BatchJob
                         * @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)): temporal.api.common.v1.Link.BatchJob;

                        /**
                         * Creates a BatchJob message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BatchJob
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Link.BatchJob;

                        /**
                         * Creates a plain object from a BatchJob message. Also converts values to other types if specified.
                         * @param message BatchJob
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.common.v1.Link.BatchJob, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BatchJob to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BatchJob
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a Priority. */
                interface IPriority {

                    /**
                     * Priority key is a positive integer from 1 to n, where smaller integers
                     * correspond to higher priorities (tasks run sooner). In general, tasks in
                     * a queue should be processed in close to priority order, although small
                     * deviations are possible.
                     *
                     * The maximum priority value (minimum priority) is determined by server
                     * configuration, and defaults to 5.
                     *
                     * If priority is not present (or zero), then the effective priority will be
                     * the default priority, which is calculated by (min+max)/2. With the
                     * default max of 5, and min of 1, that comes out to 3.
                     */
                    priorityKey?: (number|null);

                    /**
                     * Fairness key is a short string that's used as a key for a fairness
                     * balancing mechanism. It may correspond to a tenant id, or to a fixed
                     * string like "high" or "low". The default is the empty string.
                     *
                     * The fairness mechanism attempts to dispatch tasks for a given key in
                     * proportion to its weight. For example, using a thousand distinct tenant
                     * ids, each with a weight of 1.0 (the default) will result in each tenant
                     * getting a roughly equal share of task dispatch throughput.
                     *
                     * (Note: this does not imply equal share of worker capacity! Fairness
                     * decisions are made based on queue statistics, not
                     * current worker load.)
                     *
                     * As another example, using keys "high" and "low" with weight 9.0 and 1.0
                     * respectively will prefer dispatching "high" tasks over "low" tasks at a
                     * 9:1 ratio, while allowing either key to use all worker capacity if the
                     * other is not present.
                     *
                     * All fairness mechanisms, including rate limits, are best-effort and
                     * probabilistic. The results may not match what a "perfect" algorithm with
                     * infinite resources would produce. The more unique keys are used, the less
                     * accurate the results will be.
                     *
                     * Fairness keys are limited to 64 bytes.
                     */
                    fairnessKey?: (string|null);

                    /**
                     * Fairness weight for a task can come from multiple sources for
                     * flexibility. From highest to lowest precedence:
                     * 1. Weights for a small set of keys can be overridden in task queue
                     * configuration with an API.
                     * 2. It can be attached to the workflow/activity in this field.
                     * 3. The default weight of 1.0 will be used.
                     *
                     * Weight values are clamped to the range [0.001, 1000].
                     */
                    fairnessWeight?: (number|null);
                }

                /**
                 * Priority contains metadata that controls relative ordering of task processing
                 * when tasks are backed up in a queue. Initially, Priority will be used in
                 * matching (workflow and activity) task queues. Later it may be used in history
                 * task queues and in rate limiting decisions.
                 *
                 * Priority is attached to workflows and activities. By default, activities
                 * inherit Priority from the workflow that created them, but may override fields
                 * when an activity is started or modified.
                 *
                 * Despite being named "Priority", this message also contains fields that
                 * control "fairness" mechanisms.
                 *
                 * For all fields, the field not present or equal to zero/empty string means to
                 * inherit the value from the calling workflow, or if there is no calling
                 * workflow, then use the default value.
                 *
                 * For all fields other than fairness_key, the zero value isn't meaningful so
                 * there's no confusion between inherit/default and a meaningful value. For
                 * fairness_key, the empty string will be interpreted as "inherit". This means
                 * that if a workflow has a non-empty fairness key, you can't override the
                 * fairness key of its activity to the empty string.
                 *
                 * The overall semantics of Priority are:
                 * 1. First, consider "priority": higher priority (lower number) goes first.
                 * 2. Then, consider fairness: try to dispatch tasks for different fairness keys
                 * in proportion to their weight.
                 *
                 * Applications may use any subset of mechanisms that are useful to them and
                 * leave the other fields to use default values.
                 *
                 * Not all queues in the system may support the "full" semantics of all priority
                 * fields. (Currently only support in matching task queues is planned.)
                 */
                class Priority implements IPriority {

                    /**
                     * Constructs a new Priority.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IPriority);

                    /**
                     * Priority key is a positive integer from 1 to n, where smaller integers
                     * correspond to higher priorities (tasks run sooner). In general, tasks in
                     * a queue should be processed in close to priority order, although small
                     * deviations are possible.
                     *
                     * The maximum priority value (minimum priority) is determined by server
                     * configuration, and defaults to 5.
                     *
                     * If priority is not present (or zero), then the effective priority will be
                     * the default priority, which is calculated by (min+max)/2. With the
                     * default max of 5, and min of 1, that comes out to 3.
                     */
                    public priorityKey: number;

                    /**
                     * Fairness key is a short string that's used as a key for a fairness
                     * balancing mechanism. It may correspond to a tenant id, or to a fixed
                     * string like "high" or "low". The default is the empty string.
                     *
                     * The fairness mechanism attempts to dispatch tasks for a given key in
                     * proportion to its weight. For example, using a thousand distinct tenant
                     * ids, each with a weight of 1.0 (the default) will result in each tenant
                     * getting a roughly equal share of task dispatch throughput.
                     *
                     * (Note: this does not imply equal share of worker capacity! Fairness
                     * decisions are made based on queue statistics, not
                     * current worker load.)
                     *
                     * As another example, using keys "high" and "low" with weight 9.0 and 1.0
                     * respectively will prefer dispatching "high" tasks over "low" tasks at a
                     * 9:1 ratio, while allowing either key to use all worker capacity if the
                     * other is not present.
                     *
                     * All fairness mechanisms, including rate limits, are best-effort and
                     * probabilistic. The results may not match what a "perfect" algorithm with
                     * infinite resources would produce. The more unique keys are used, the less
                     * accurate the results will be.
                     *
                     * Fairness keys are limited to 64 bytes.
                     */
                    public fairnessKey: string;

                    /**
                     * Fairness weight for a task can come from multiple sources for
                     * flexibility. From highest to lowest precedence:
                     * 1. Weights for a small set of keys can be overridden in task queue
                     * configuration with an API.
                     * 2. It can be attached to the workflow/activity in this field.
                     * 3. The default weight of 1.0 will be used.
                     *
                     * Weight values are clamped to the range [0.001, 1000].
                     */
                    public fairnessWeight: number;

                    /**
                     * Creates a new Priority instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Priority instance
                     */
                    public static create(properties?: temporal.api.common.v1.IPriority): temporal.api.common.v1.Priority;

                    /**
                     * Encodes the specified Priority message. Does not implicitly {@link temporal.api.common.v1.Priority.verify|verify} messages.
                     * @param message Priority message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IPriority, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Priority message, length delimited. Does not implicitly {@link temporal.api.common.v1.Priority.verify|verify} messages.
                     * @param message Priority message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IPriority, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Priority message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Priority
                     * @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): temporal.api.common.v1.Priority;

                    /**
                     * Decodes a Priority message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Priority
                     * @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)): temporal.api.common.v1.Priority;

                    /**
                     * Creates a Priority message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Priority
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.Priority;

                    /**
                     * Creates a plain object from a Priority message. Also converts values to other types if specified.
                     * @param message Priority
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.Priority, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Priority to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Priority
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkerSelector. */
                interface IWorkerSelector {

                    /** Worker instance key to which the command should be sent. */
                    workerInstanceKey?: (string|null);
                }

                /**
                 * This is used to send commands to a specific worker or a group of workers.
                 * Right now, it is used to send commands to a specific worker instance.
                 * Will be extended to be able to send command to multiple workers.
                 */
                class WorkerSelector implements IWorkerSelector {

                    /**
                     * Constructs a new WorkerSelector.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.common.v1.IWorkerSelector);

                    /** Worker instance key to which the command should be sent. */
                    public workerInstanceKey?: (string|null);

                    /**
                     * Options are:
                     * - query (will be used as query to ListWorkers, same format as in ListWorkersRequest.query)
                     * - task queue (just a shortcut. Same as query=' "TaskQueue"="my-task-queue" ')
                     * - etc.
                     * All but 'query' are shortcuts, can be replaced with a query, but it is not convenient.
                     * string query = 5;
                     * string task_queue = 6;
                     * ...
                     */
                    public selector?: "workerInstanceKey";

                    /**
                     * Creates a new WorkerSelector instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerSelector instance
                     */
                    public static create(properties?: temporal.api.common.v1.IWorkerSelector): temporal.api.common.v1.WorkerSelector;

                    /**
                     * Encodes the specified WorkerSelector message. Does not implicitly {@link temporal.api.common.v1.WorkerSelector.verify|verify} messages.
                     * @param message WorkerSelector message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.common.v1.IWorkerSelector, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerSelector message, length delimited. Does not implicitly {@link temporal.api.common.v1.WorkerSelector.verify|verify} messages.
                     * @param message WorkerSelector message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.common.v1.IWorkerSelector, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerSelector message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerSelector
                     * @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): temporal.api.common.v1.WorkerSelector;

                    /**
                     * Decodes a WorkerSelector message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerSelector
                     * @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)): temporal.api.common.v1.WorkerSelector;

                    /**
                     * Creates a WorkerSelector message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerSelector
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.common.v1.WorkerSelector;

                    /**
                     * Creates a plain object from a WorkerSelector message. Also converts values to other types if specified.
                     * @param message WorkerSelector
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.common.v1.WorkerSelector, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerSelector to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerSelector
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace enums. */
        namespace enums {

            /** Namespace v1. */
            namespace v1 {

                /** EncodingType enum. */
                enum EncodingType {
                    ENCODING_TYPE_UNSPECIFIED = 0,
                    ENCODING_TYPE_PROTO3 = 1,
                    ENCODING_TYPE_JSON = 2
                }

                /** IndexedValueType enum. */
                enum IndexedValueType {
                    INDEXED_VALUE_TYPE_UNSPECIFIED = 0,
                    INDEXED_VALUE_TYPE_TEXT = 1,
                    INDEXED_VALUE_TYPE_KEYWORD = 2,
                    INDEXED_VALUE_TYPE_INT = 3,
                    INDEXED_VALUE_TYPE_DOUBLE = 4,
                    INDEXED_VALUE_TYPE_BOOL = 5,
                    INDEXED_VALUE_TYPE_DATETIME = 6,
                    INDEXED_VALUE_TYPE_KEYWORD_LIST = 7
                }

                /** Severity enum. */
                enum Severity {
                    SEVERITY_UNSPECIFIED = 0,
                    SEVERITY_HIGH = 1,
                    SEVERITY_MEDIUM = 2,
                    SEVERITY_LOW = 3
                }

                /** State of a callback. */
                enum CallbackState {
                    CALLBACK_STATE_UNSPECIFIED = 0,
                    CALLBACK_STATE_STANDBY = 1,
                    CALLBACK_STATE_SCHEDULED = 2,
                    CALLBACK_STATE_BACKING_OFF = 3,
                    CALLBACK_STATE_FAILED = 4,
                    CALLBACK_STATE_SUCCEEDED = 5,
                    CALLBACK_STATE_BLOCKED = 6
                }

                /** State of a pending Nexus operation. */
                enum PendingNexusOperationState {
                    PENDING_NEXUS_OPERATION_STATE_UNSPECIFIED = 0,
                    PENDING_NEXUS_OPERATION_STATE_SCHEDULED = 1,
                    PENDING_NEXUS_OPERATION_STATE_BACKING_OFF = 2,
                    PENDING_NEXUS_OPERATION_STATE_STARTED = 3,
                    PENDING_NEXUS_OPERATION_STATE_BLOCKED = 4
                }

                /** State of a Nexus operation cancellation. */
                enum NexusOperationCancellationState {
                    NEXUS_OPERATION_CANCELLATION_STATE_UNSPECIFIED = 0,
                    NEXUS_OPERATION_CANCELLATION_STATE_SCHEDULED = 1,
                    NEXUS_OPERATION_CANCELLATION_STATE_BACKING_OFF = 2,
                    NEXUS_OPERATION_CANCELLATION_STATE_SUCCEEDED = 3,
                    NEXUS_OPERATION_CANCELLATION_STATE_FAILED = 4,
                    NEXUS_OPERATION_CANCELLATION_STATE_TIMED_OUT = 5,
                    NEXUS_OPERATION_CANCELLATION_STATE_BLOCKED = 6
                }

                /** WorkflowRuleActionScope enum. */
                enum WorkflowRuleActionScope {
                    WORKFLOW_RULE_ACTION_SCOPE_UNSPECIFIED = 0,
                    WORKFLOW_RULE_ACTION_SCOPE_WORKFLOW = 1,
                    WORKFLOW_RULE_ACTION_SCOPE_ACTIVITY = 2
                }

                /** ApplicationErrorCategory enum. */
                enum ApplicationErrorCategory {
                    APPLICATION_ERROR_CATEGORY_UNSPECIFIED = 0,
                    APPLICATION_ERROR_CATEGORY_BENIGN = 1
                }

                /**
                 * (-- api-linter: core::0216::synonyms=disabled
                 * aip.dev/not-precedent: It seems we have both state and status, and status is a better fit for workers. --)
                 */
                enum WorkerStatus {
                    WORKER_STATUS_UNSPECIFIED = 0,
                    WORKER_STATUS_RUNNING = 1,
                    WORKER_STATUS_SHUTTING_DOWN = 2,
                    WORKER_STATUS_SHUTDOWN = 3
                }

                /** Whenever this list of events is changed do change the function shouldBufferEvent in mutableStateBuilder.go to make sure to do the correct event ordering */
                enum EventType {
                    EVENT_TYPE_UNSPECIFIED = 0,
                    EVENT_TYPE_WORKFLOW_EXECUTION_STARTED = 1,
                    EVENT_TYPE_WORKFLOW_EXECUTION_COMPLETED = 2,
                    EVENT_TYPE_WORKFLOW_EXECUTION_FAILED = 3,
                    EVENT_TYPE_WORKFLOW_EXECUTION_TIMED_OUT = 4,
                    EVENT_TYPE_WORKFLOW_TASK_SCHEDULED = 5,
                    EVENT_TYPE_WORKFLOW_TASK_STARTED = 6,
                    EVENT_TYPE_WORKFLOW_TASK_COMPLETED = 7,
                    EVENT_TYPE_WORKFLOW_TASK_TIMED_OUT = 8,
                    EVENT_TYPE_WORKFLOW_TASK_FAILED = 9,
                    EVENT_TYPE_ACTIVITY_TASK_SCHEDULED = 10,
                    EVENT_TYPE_ACTIVITY_TASK_STARTED = 11,
                    EVENT_TYPE_ACTIVITY_TASK_COMPLETED = 12,
                    EVENT_TYPE_ACTIVITY_TASK_FAILED = 13,
                    EVENT_TYPE_ACTIVITY_TASK_TIMED_OUT = 14,
                    EVENT_TYPE_ACTIVITY_TASK_CANCEL_REQUESTED = 15,
                    EVENT_TYPE_ACTIVITY_TASK_CANCELED = 16,
                    EVENT_TYPE_TIMER_STARTED = 17,
                    EVENT_TYPE_TIMER_FIRED = 18,
                    EVENT_TYPE_TIMER_CANCELED = 19,
                    EVENT_TYPE_WORKFLOW_EXECUTION_CANCEL_REQUESTED = 20,
                    EVENT_TYPE_WORKFLOW_EXECUTION_CANCELED = 21,
                    EVENT_TYPE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED = 22,
                    EVENT_TYPE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED = 23,
                    EVENT_TYPE_EXTERNAL_WORKFLOW_EXECUTION_CANCEL_REQUESTED = 24,
                    EVENT_TYPE_MARKER_RECORDED = 25,
                    EVENT_TYPE_WORKFLOW_EXECUTION_SIGNALED = 26,
                    EVENT_TYPE_WORKFLOW_EXECUTION_TERMINATED = 27,
                    EVENT_TYPE_WORKFLOW_EXECUTION_CONTINUED_AS_NEW = 28,
                    EVENT_TYPE_START_CHILD_WORKFLOW_EXECUTION_INITIATED = 29,
                    EVENT_TYPE_START_CHILD_WORKFLOW_EXECUTION_FAILED = 30,
                    EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_STARTED = 31,
                    EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_COMPLETED = 32,
                    EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_FAILED = 33,
                    EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_CANCELED = 34,
                    EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_TIMED_OUT = 35,
                    EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_TERMINATED = 36,
                    EVENT_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED = 37,
                    EVENT_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED = 38,
                    EVENT_TYPE_EXTERNAL_WORKFLOW_EXECUTION_SIGNALED = 39,
                    EVENT_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES = 40,
                    EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_ADMITTED = 47,
                    EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_ACCEPTED = 41,
                    EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_REJECTED = 42,
                    EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_COMPLETED = 43,
                    EVENT_TYPE_WORKFLOW_PROPERTIES_MODIFIED_EXTERNALLY = 44,
                    EVENT_TYPE_ACTIVITY_PROPERTIES_MODIFIED_EXTERNALLY = 45,
                    EVENT_TYPE_WORKFLOW_PROPERTIES_MODIFIED = 46,
                    EVENT_TYPE_NEXUS_OPERATION_SCHEDULED = 48,
                    EVENT_TYPE_NEXUS_OPERATION_STARTED = 49,
                    EVENT_TYPE_NEXUS_OPERATION_COMPLETED = 50,
                    EVENT_TYPE_NEXUS_OPERATION_FAILED = 51,
                    EVENT_TYPE_NEXUS_OPERATION_CANCELED = 52,
                    EVENT_TYPE_NEXUS_OPERATION_TIMED_OUT = 53,
                    EVENT_TYPE_NEXUS_OPERATION_CANCEL_REQUESTED = 54,
                    EVENT_TYPE_WORKFLOW_EXECUTION_OPTIONS_UPDATED = 55,
                    EVENT_TYPE_NEXUS_OPERATION_CANCEL_REQUEST_COMPLETED = 56,
                    EVENT_TYPE_NEXUS_OPERATION_CANCEL_REQUEST_FAILED = 57,
                    EVENT_TYPE_WORKFLOW_EXECUTION_PAUSED = 58,
                    EVENT_TYPE_WORKFLOW_EXECUTION_UNPAUSED = 59
                }

                /** Event types to exclude when reapplying events beyond the reset point. */
                enum ResetReapplyExcludeType {
                    RESET_REAPPLY_EXCLUDE_TYPE_UNSPECIFIED = 0,
                    RESET_REAPPLY_EXCLUDE_TYPE_SIGNAL = 1,
                    RESET_REAPPLY_EXCLUDE_TYPE_UPDATE = 2,
                    RESET_REAPPLY_EXCLUDE_TYPE_NEXUS = 3,
                    RESET_REAPPLY_EXCLUDE_TYPE_CANCEL_REQUEST = 4
                }

                /**
                 * Deprecated: applications should use ResetReapplyExcludeType to specify
                 * exclusions from this set, and new event types should be added to ResetReapplyExcludeType
                 * instead of here.
                 */
                enum ResetReapplyType {
                    RESET_REAPPLY_TYPE_UNSPECIFIED = 0,
                    RESET_REAPPLY_TYPE_SIGNAL = 1,
                    RESET_REAPPLY_TYPE_NONE = 2,
                    RESET_REAPPLY_TYPE_ALL_ELIGIBLE = 3
                }

                /** Deprecated, see temporal.api.common.v1.ResetOptions. */
                enum ResetType {
                    RESET_TYPE_UNSPECIFIED = 0,
                    RESET_TYPE_FIRST_WORKFLOW_TASK = 1,
                    RESET_TYPE_LAST_WORKFLOW_TASK = 2
                }

                /**
                 * Defines whether to allow re-using a workflow id from a previously *closed* workflow.
                 * If the request is denied, the server returns a `WorkflowExecutionAlreadyStartedFailure` error.
                 *
                 * See `WorkflowIdConflictPolicy` for handling workflow id duplication with a *running* workflow.
                 */
                enum WorkflowIdReusePolicy {
                    WORKFLOW_ID_REUSE_POLICY_UNSPECIFIED = 0,
                    WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE = 1,
                    WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY = 2,
                    WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE = 3,
                    WORKFLOW_ID_REUSE_POLICY_TERMINATE_IF_RUNNING = 4
                }

                /**
                 * Defines what to do when trying to start a workflow with the same workflow id as a *running* workflow.
                 * Note that it is *never* valid to have two actively running instances of the same workflow id.
                 *
                 * See `WorkflowIdReusePolicy` for handling workflow id duplication with a *closed* workflow.
                 */
                enum WorkflowIdConflictPolicy {
                    WORKFLOW_ID_CONFLICT_POLICY_UNSPECIFIED = 0,
                    WORKFLOW_ID_CONFLICT_POLICY_FAIL = 1,
                    WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING = 2,
                    WORKFLOW_ID_CONFLICT_POLICY_TERMINATE_EXISTING = 3
                }

                /** Defines how child workflows will react to their parent completing */
                enum ParentClosePolicy {
                    PARENT_CLOSE_POLICY_UNSPECIFIED = 0,
                    PARENT_CLOSE_POLICY_TERMINATE = 1,
                    PARENT_CLOSE_POLICY_ABANDON = 2,
                    PARENT_CLOSE_POLICY_REQUEST_CANCEL = 3
                }

                /** ContinueAsNewInitiator enum. */
                enum ContinueAsNewInitiator {
                    CONTINUE_AS_NEW_INITIATOR_UNSPECIFIED = 0,
                    CONTINUE_AS_NEW_INITIATOR_WORKFLOW = 1,
                    CONTINUE_AS_NEW_INITIATOR_RETRY = 2,
                    CONTINUE_AS_NEW_INITIATOR_CRON_SCHEDULE = 3
                }

                /**
                 * (-- api-linter: core::0216::synonyms=disabled
                 * aip.dev/not-precedent: There is WorkflowExecutionState already in another package. --)
                 */
                enum WorkflowExecutionStatus {
                    WORKFLOW_EXECUTION_STATUS_UNSPECIFIED = 0,
                    WORKFLOW_EXECUTION_STATUS_RUNNING = 1,
                    WORKFLOW_EXECUTION_STATUS_COMPLETED = 2,
                    WORKFLOW_EXECUTION_STATUS_FAILED = 3,
                    WORKFLOW_EXECUTION_STATUS_CANCELED = 4,
                    WORKFLOW_EXECUTION_STATUS_TERMINATED = 5,
                    WORKFLOW_EXECUTION_STATUS_CONTINUED_AS_NEW = 6,
                    WORKFLOW_EXECUTION_STATUS_TIMED_OUT = 7,
                    WORKFLOW_EXECUTION_STATUS_PAUSED = 8
                }

                /** PendingActivityState enum. */
                enum PendingActivityState {
                    PENDING_ACTIVITY_STATE_UNSPECIFIED = 0,
                    PENDING_ACTIVITY_STATE_SCHEDULED = 1,
                    PENDING_ACTIVITY_STATE_STARTED = 2,
                    PENDING_ACTIVITY_STATE_CANCEL_REQUESTED = 3,
                    PENDING_ACTIVITY_STATE_PAUSED = 4,
                    PENDING_ACTIVITY_STATE_PAUSE_REQUESTED = 5
                }

                /** PendingWorkflowTaskState enum. */
                enum PendingWorkflowTaskState {
                    PENDING_WORKFLOW_TASK_STATE_UNSPECIFIED = 0,
                    PENDING_WORKFLOW_TASK_STATE_SCHEDULED = 1,
                    PENDING_WORKFLOW_TASK_STATE_STARTED = 2
                }

                /** HistoryEventFilterType enum. */
                enum HistoryEventFilterType {
                    HISTORY_EVENT_FILTER_TYPE_UNSPECIFIED = 0,
                    HISTORY_EVENT_FILTER_TYPE_ALL_EVENT = 1,
                    HISTORY_EVENT_FILTER_TYPE_CLOSE_EVENT = 2
                }

                /** RetryState enum. */
                enum RetryState {
                    RETRY_STATE_UNSPECIFIED = 0,
                    RETRY_STATE_IN_PROGRESS = 1,
                    RETRY_STATE_NON_RETRYABLE_FAILURE = 2,
                    RETRY_STATE_TIMEOUT = 3,
                    RETRY_STATE_MAXIMUM_ATTEMPTS_REACHED = 4,
                    RETRY_STATE_RETRY_POLICY_NOT_SET = 5,
                    RETRY_STATE_INTERNAL_SERVER_ERROR = 6,
                    RETRY_STATE_CANCEL_REQUESTED = 7
                }

                /** TimeoutType enum. */
                enum TimeoutType {
                    TIMEOUT_TYPE_UNSPECIFIED = 0,
                    TIMEOUT_TYPE_START_TO_CLOSE = 1,
                    TIMEOUT_TYPE_SCHEDULE_TO_START = 2,
                    TIMEOUT_TYPE_SCHEDULE_TO_CLOSE = 3,
                    TIMEOUT_TYPE_HEARTBEAT = 4
                }

                /**
                 * Versioning Behavior specifies if and how a workflow execution moves between Worker Deployment
                 * Versions. The Versioning Behavior of a workflow execution is typically specified by the worker
                 * who completes the first task of the execution, but is also overridable manually for new and
                 * existing workflows (see VersioningOverride).
                 * Experimental. Worker Deployments are experimental and might significantly change in the future.
                 */
                enum VersioningBehavior {
                    VERSIONING_BEHAVIOR_UNSPECIFIED = 0,
                    VERSIONING_BEHAVIOR_PINNED = 1,
                    VERSIONING_BEHAVIOR_AUTO_UPGRADE = 2
                }

                /** Experimental. Defines the versioning behavior to be used by the first task of a new workflow run in a continue-as-new chain. */
                enum ContinueAsNewVersioningBehavior {
                    CONTINUE_AS_NEW_VERSIONING_BEHAVIOR_UNSPECIFIED = 0,
                    CONTINUE_AS_NEW_VERSIONING_BEHAVIOR_AUTO_UPGRADE = 1
                }

                /** SuggestContinueAsNewReason specifies why SuggestContinueAsNew is true. */
                enum SuggestContinueAsNewReason {
                    SUGGEST_CONTINUE_AS_NEW_REASON_UNSPECIFIED = 0,
                    SUGGEST_CONTINUE_AS_NEW_REASON_HISTORY_SIZE_TOO_LARGE = 1,
                    SUGGEST_CONTINUE_AS_NEW_REASON_TOO_MANY_HISTORY_EVENTS = 2,
                    SUGGEST_CONTINUE_AS_NEW_REASON_TOO_MANY_UPDATES = 3
                }

                /**
                 * NexusHandlerErrorRetryBehavior allows nexus handlers to explicity set the retry behavior of a HandlerError. If not
                 * specified, retry behavior is determined from the error type. For example internal errors are not retryable by default
                 * unless specified otherwise.
                 */
                enum NexusHandlerErrorRetryBehavior {
                    NEXUS_HANDLER_ERROR_RETRY_BEHAVIOR_UNSPECIFIED = 0,
                    NEXUS_HANDLER_ERROR_RETRY_BEHAVIOR_RETRYABLE = 1,
                    NEXUS_HANDLER_ERROR_RETRY_BEHAVIOR_NON_RETRYABLE = 2
                }

                /**
                 * UpdateWorkflowExecutionLifecycleStage is specified by clients invoking
                 * Workflow Updates and used to indicate to the server how long the
                 * client wishes to wait for a return value from the API. If any value other
                 * than UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_COMPLETED is sent by the
                 * client then the API will complete before the Update is finished and will
                 * return a handle to the running Update so that it can later be polled for
                 * completion.
                 * If specified stage wasn't reached before server timeout, server returns
                 * actual stage reached.
                 */
                enum UpdateWorkflowExecutionLifecycleStage {
                    UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_UNSPECIFIED = 0,
                    UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ADMITTED = 1,
                    UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ACCEPTED = 2,
                    UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_COMPLETED = 3
                }

                /**
                 * Records why a WorkflowExecutionUpdateAdmittedEvent was written to history.
                 * Note that not all admitted Updates result in this event.
                 */
                enum UpdateAdmittedEventOrigin {
                    UPDATE_ADMITTED_EVENT_ORIGIN_UNSPECIFIED = 0,
                    UPDATE_ADMITTED_EVENT_ORIGIN_REAPPLY = 1
                }

                /** BatchOperationType enum. */
                enum BatchOperationType {
                    BATCH_OPERATION_TYPE_UNSPECIFIED = 0,
                    BATCH_OPERATION_TYPE_TERMINATE = 1,
                    BATCH_OPERATION_TYPE_CANCEL = 2,
                    BATCH_OPERATION_TYPE_SIGNAL = 3,
                    BATCH_OPERATION_TYPE_DELETE = 4,
                    BATCH_OPERATION_TYPE_RESET = 5,
                    BATCH_OPERATION_TYPE_UPDATE_EXECUTION_OPTIONS = 6,
                    BATCH_OPERATION_TYPE_UNPAUSE_ACTIVITY = 7,
                    BATCH_OPERATION_TYPE_UPDATE_ACTIVITY_OPTIONS = 8,
                    BATCH_OPERATION_TYPE_RESET_ACTIVITY = 9
                }

                /** BatchOperationState enum. */
                enum BatchOperationState {
                    BATCH_OPERATION_STATE_UNSPECIFIED = 0,
                    BATCH_OPERATION_STATE_RUNNING = 1,
                    BATCH_OPERATION_STATE_COMPLETED = 2,
                    BATCH_OPERATION_STATE_FAILED = 3
                }

                /** NamespaceState enum. */
                enum NamespaceState {
                    NAMESPACE_STATE_UNSPECIFIED = 0,
                    NAMESPACE_STATE_REGISTERED = 1,
                    NAMESPACE_STATE_DEPRECATED = 2,
                    NAMESPACE_STATE_DELETED = 3
                }

                /** ArchivalState enum. */
                enum ArchivalState {
                    ARCHIVAL_STATE_UNSPECIFIED = 0,
                    ARCHIVAL_STATE_DISABLED = 1,
                    ARCHIVAL_STATE_ENABLED = 2
                }

                /** ReplicationState enum. */
                enum ReplicationState {
                    REPLICATION_STATE_UNSPECIFIED = 0,
                    REPLICATION_STATE_NORMAL = 1,
                    REPLICATION_STATE_HANDOVER = 2
                }

                /**
                 * Workflow tasks can fail for various reasons. Note that some of these reasons can only originate
                 * from the server, and some of them can only originate from the SDK/worker.
                 */
                enum WorkflowTaskFailedCause {
                    WORKFLOW_TASK_FAILED_CAUSE_UNSPECIFIED = 0,
                    WORKFLOW_TASK_FAILED_CAUSE_UNHANDLED_COMMAND = 1,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_SCHEDULE_ACTIVITY_ATTRIBUTES = 2,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES = 3,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_START_TIMER_ATTRIBUTES = 4,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_CANCEL_TIMER_ATTRIBUTES = 5,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_RECORD_MARKER_ATTRIBUTES = 6,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES = 7,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES = 8,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES = 9,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES = 10,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_CONTINUE_AS_NEW_ATTRIBUTES = 11,
                    WORKFLOW_TASK_FAILED_CAUSE_START_TIMER_DUPLICATE_ID = 12,
                    WORKFLOW_TASK_FAILED_CAUSE_RESET_STICKY_TASK_QUEUE = 13,
                    WORKFLOW_TASK_FAILED_CAUSE_WORKFLOW_WORKER_UNHANDLED_FAILURE = 14,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES = 15,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_START_CHILD_EXECUTION_ATTRIBUTES = 16,
                    WORKFLOW_TASK_FAILED_CAUSE_FORCE_CLOSE_COMMAND = 17,
                    WORKFLOW_TASK_FAILED_CAUSE_FAILOVER_CLOSE_COMMAND = 18,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_SIGNAL_INPUT_SIZE = 19,
                    WORKFLOW_TASK_FAILED_CAUSE_RESET_WORKFLOW = 20,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_BINARY = 21,
                    WORKFLOW_TASK_FAILED_CAUSE_SCHEDULE_ACTIVITY_DUPLICATE_ID = 22,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_SEARCH_ATTRIBUTES = 23,
                    WORKFLOW_TASK_FAILED_CAUSE_NON_DETERMINISTIC_ERROR = 24,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_MODIFY_WORKFLOW_PROPERTIES_ATTRIBUTES = 25,
                    WORKFLOW_TASK_FAILED_CAUSE_PENDING_CHILD_WORKFLOWS_LIMIT_EXCEEDED = 26,
                    WORKFLOW_TASK_FAILED_CAUSE_PENDING_ACTIVITIES_LIMIT_EXCEEDED = 27,
                    WORKFLOW_TASK_FAILED_CAUSE_PENDING_SIGNALS_LIMIT_EXCEEDED = 28,
                    WORKFLOW_TASK_FAILED_CAUSE_PENDING_REQUEST_CANCEL_LIMIT_EXCEEDED = 29,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_UPDATE_WORKFLOW_EXECUTION_MESSAGE = 30,
                    WORKFLOW_TASK_FAILED_CAUSE_UNHANDLED_UPDATE = 31,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_SCHEDULE_NEXUS_OPERATION_ATTRIBUTES = 32,
                    WORKFLOW_TASK_FAILED_CAUSE_PENDING_NEXUS_OPERATIONS_LIMIT_EXCEEDED = 33,
                    WORKFLOW_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_NEXUS_OPERATION_ATTRIBUTES = 34,
                    WORKFLOW_TASK_FAILED_CAUSE_FEATURE_DISABLED = 35,
                    WORKFLOW_TASK_FAILED_CAUSE_GRPC_MESSAGE_TOO_LARGE = 36,
                    WORKFLOW_TASK_FAILED_CAUSE_PAYLOADS_TOO_LARGE = 37
                }

                /** StartChildWorkflowExecutionFailedCause enum. */
                enum StartChildWorkflowExecutionFailedCause {
                    START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_UNSPECIFIED = 0,
                    START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_EXISTS = 1,
                    START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_NAMESPACE_NOT_FOUND = 2
                }

                /** CancelExternalWorkflowExecutionFailedCause enum. */
                enum CancelExternalWorkflowExecutionFailedCause {
                    CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_UNSPECIFIED = 0,
                    CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_EXTERNAL_WORKFLOW_EXECUTION_NOT_FOUND = 1,
                    CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_NAMESPACE_NOT_FOUND = 2
                }

                /** SignalExternalWorkflowExecutionFailedCause enum. */
                enum SignalExternalWorkflowExecutionFailedCause {
                    SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_UNSPECIFIED = 0,
                    SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_EXTERNAL_WORKFLOW_EXECUTION_NOT_FOUND = 1,
                    SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_NAMESPACE_NOT_FOUND = 2,
                    SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_SIGNAL_COUNT_LIMIT_EXCEEDED = 3
                }

                /** ResourceExhaustedCause enum. */
                enum ResourceExhaustedCause {
                    RESOURCE_EXHAUSTED_CAUSE_UNSPECIFIED = 0,
                    RESOURCE_EXHAUSTED_CAUSE_RPS_LIMIT = 1,
                    RESOURCE_EXHAUSTED_CAUSE_CONCURRENT_LIMIT = 2,
                    RESOURCE_EXHAUSTED_CAUSE_SYSTEM_OVERLOADED = 3,
                    RESOURCE_EXHAUSTED_CAUSE_PERSISTENCE_LIMIT = 4,
                    RESOURCE_EXHAUSTED_CAUSE_BUSY_WORKFLOW = 5,
                    RESOURCE_EXHAUSTED_CAUSE_APS_LIMIT = 6,
                    RESOURCE_EXHAUSTED_CAUSE_PERSISTENCE_STORAGE_LIMIT = 7,
                    RESOURCE_EXHAUSTED_CAUSE_CIRCUIT_BREAKER_OPEN = 8,
                    RESOURCE_EXHAUSTED_CAUSE_OPS_LIMIT = 9,
                    RESOURCE_EXHAUSTED_CAUSE_WORKER_DEPLOYMENT_LIMITS = 10
                }

                /** ResourceExhaustedScope enum. */
                enum ResourceExhaustedScope {
                    RESOURCE_EXHAUSTED_SCOPE_UNSPECIFIED = 0,
                    RESOURCE_EXHAUSTED_SCOPE_NAMESPACE = 1,
                    RESOURCE_EXHAUSTED_SCOPE_SYSTEM = 2
                }

                /** QueryResultType enum. */
                enum QueryResultType {
                    QUERY_RESULT_TYPE_UNSPECIFIED = 0,
                    QUERY_RESULT_TYPE_ANSWERED = 1,
                    QUERY_RESULT_TYPE_FAILED = 2
                }

                /** QueryRejectCondition enum. */
                enum QueryRejectCondition {
                    QUERY_REJECT_CONDITION_UNSPECIFIED = 0,
                    QUERY_REJECT_CONDITION_NONE = 1,
                    QUERY_REJECT_CONDITION_NOT_OPEN = 2,
                    QUERY_REJECT_CONDITION_NOT_COMPLETED_CLEANLY = 3
                }

                /** TaskQueueKind enum. */
                enum TaskQueueKind {
                    TASK_QUEUE_KIND_UNSPECIFIED = 0,
                    TASK_QUEUE_KIND_NORMAL = 1,
                    TASK_QUEUE_KIND_STICKY = 2
                }

                /** TaskQueueType enum. */
                enum TaskQueueType {
                    TASK_QUEUE_TYPE_UNSPECIFIED = 0,
                    TASK_QUEUE_TYPE_WORKFLOW = 1,
                    TASK_QUEUE_TYPE_ACTIVITY = 2,
                    TASK_QUEUE_TYPE_NEXUS = 3
                }

                /**
                 * Specifies which category of tasks may reach a worker on a versioned task queue.
                 * Used both in a reachability query and its response.
                 * Deprecated.
                 */
                enum TaskReachability {
                    TASK_REACHABILITY_UNSPECIFIED = 0,
                    TASK_REACHABILITY_NEW_WORKFLOWS = 1,
                    TASK_REACHABILITY_EXISTING_WORKFLOWS = 2,
                    TASK_REACHABILITY_OPEN_WORKFLOWS = 3,
                    TASK_REACHABILITY_CLOSED_WORKFLOWS = 4
                }

                /**
                 * Specifies which category of tasks may reach a versioned worker of a certain Build ID.
                 *
                 * Task Reachability is eventually consistent; there may be a delay (up to few minutes) until it
                 * converges to the most accurate value but it is designed in a way to take the more conservative
                 * side until it converges. For example REACHABLE is more conservative than CLOSED_WORKFLOWS_ONLY.
                 *
                 * Note: future activities who inherit their workflow's Build ID but not its Task Queue will not be
                 * accounted for reachability as server cannot know if they'll happen as they do not use
                 * assignment rules of their Task Queue. Same goes for Child Workflows or Continue-As-New Workflows
                 * who inherit the parent/previous workflow's Build ID but not its Task Queue. In those cases, make
                 * sure to query reachability for the parent/previous workflow's Task Queue as well.
                 */
                enum BuildIdTaskReachability {
                    BUILD_ID_TASK_REACHABILITY_UNSPECIFIED = 0,
                    BUILD_ID_TASK_REACHABILITY_REACHABLE = 1,
                    BUILD_ID_TASK_REACHABILITY_CLOSED_WORKFLOWS_ONLY = 2,
                    BUILD_ID_TASK_REACHABILITY_UNREACHABLE = 3
                }

                /** DescribeTaskQueueMode enum. */
                enum DescribeTaskQueueMode {
                    DESCRIBE_TASK_QUEUE_MODE_UNSPECIFIED = 0,
                    DESCRIBE_TASK_QUEUE_MODE_ENHANCED = 1
                }

                /** Source for the effective rate limit. */
                enum RateLimitSource {
                    RATE_LIMIT_SOURCE_UNSPECIFIED = 0,
                    RATE_LIMIT_SOURCE_API = 1,
                    RATE_LIMIT_SOURCE_WORKER = 2,
                    RATE_LIMIT_SOURCE_SYSTEM = 3
                }

                /**
                 * Indicates whether a change to the Routing Config has been
                 * propagated to all relevant Task Queues and their partitions.
                 */
                enum RoutingConfigUpdateState {
                    ROUTING_CONFIG_UPDATE_STATE_UNSPECIFIED = 0,
                    ROUTING_CONFIG_UPDATE_STATE_IN_PROGRESS = 1,
                    ROUTING_CONFIG_UPDATE_STATE_COMPLETED = 2
                }

                /**
                 * Specify the reachability level for a deployment so users can decide if it is time to
                 * decommission the deployment.
                 */
                enum DeploymentReachability {
                    DEPLOYMENT_REACHABILITY_UNSPECIFIED = 0,
                    DEPLOYMENT_REACHABILITY_REACHABLE = 1,
                    DEPLOYMENT_REACHABILITY_CLOSED_WORKFLOWS_ONLY = 2,
                    DEPLOYMENT_REACHABILITY_UNREACHABLE = 3
                }

                /**
                 * (-- api-linter: core::0216::synonyms=disabled
                 * aip.dev/not-precedent: Call this status because it is . --)
                 * Specify the drainage status for a Worker Deployment Version so users can decide whether they
                 * can safely decommission the version.
                 * Experimental. Worker Deployments are experimental and might significantly change in the future.
                 */
                enum VersionDrainageStatus {
                    VERSION_DRAINAGE_STATUS_UNSPECIFIED = 0,
                    VERSION_DRAINAGE_STATUS_DRAINING = 1,
                    VERSION_DRAINAGE_STATUS_DRAINED = 2
                }

                /**
                 * Versioning Mode of a worker is set by the app developer in the worker code, and specifies the
                 * behavior of the system in the following related aspects:
                 * - Whether or not Temporal Server considers this worker's version (Build ID) when dispatching
                 * tasks to it.
                 * - Whether or not the workflows processed by this worker are versioned using the worker's version.
                 * Experimental. Worker Deployments are experimental and might significantly change in the future.
                 */
                enum WorkerVersioningMode {
                    WORKER_VERSIONING_MODE_UNSPECIFIED = 0,
                    WORKER_VERSIONING_MODE_UNVERSIONED = 1,
                    WORKER_VERSIONING_MODE_VERSIONED = 2
                }

                /**
                 * (-- api-linter: core::0216::synonyms=disabled
                 * aip.dev/not-precedent: Call this status because it is . --)
                 * Specify the status of a Worker Deployment Version.
                 * Experimental. Worker Deployments are experimental and might significantly change in the future.
                 */
                enum WorkerDeploymentVersionStatus {
                    WORKER_DEPLOYMENT_VERSION_STATUS_UNSPECIFIED = 0,
                    WORKER_DEPLOYMENT_VERSION_STATUS_INACTIVE = 1,
                    WORKER_DEPLOYMENT_VERSION_STATUS_CURRENT = 2,
                    WORKER_DEPLOYMENT_VERSION_STATUS_RAMPING = 3,
                    WORKER_DEPLOYMENT_VERSION_STATUS_DRAINING = 4,
                    WORKER_DEPLOYMENT_VERSION_STATUS_DRAINED = 5
                }

                /**
                 * Status of a standalone activity.
                 * The status is updated once, when the activity is originally scheduled, and again when the activity reaches a terminal
                 * status.
                 * (-- api-linter: core::0216::synonyms=disabled
                 * aip.dev/not-precedent: Named consistently with WorkflowExecutionStatus. --)
                 */
                enum ActivityExecutionStatus {
                    ACTIVITY_EXECUTION_STATUS_UNSPECIFIED = 0,
                    ACTIVITY_EXECUTION_STATUS_RUNNING = 1,
                    ACTIVITY_EXECUTION_STATUS_COMPLETED = 2,
                    ACTIVITY_EXECUTION_STATUS_FAILED = 3,
                    ACTIVITY_EXECUTION_STATUS_CANCELED = 4,
                    ACTIVITY_EXECUTION_STATUS_TERMINATED = 5,
                    ACTIVITY_EXECUTION_STATUS_TIMED_OUT = 6
                }

                /**
                 * Defines whether to allow re-using an activity ID from a previously *closed* activity.
                 * If the request is denied, the server returns an `ActivityExecutionAlreadyStarted` error.
                 *
                 * See `ActivityIdConflictPolicy` for handling ID duplication with a *running* activity.
                 */
                enum ActivityIdReusePolicy {
                    ACTIVITY_ID_REUSE_POLICY_UNSPECIFIED = 0,
                    ACTIVITY_ID_REUSE_POLICY_ALLOW_DUPLICATE = 1,
                    ACTIVITY_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY = 2,
                    ACTIVITY_ID_REUSE_POLICY_REJECT_DUPLICATE = 3
                }

                /**
                 * Defines what to do when trying to start an activity with the same ID as a *running* activity.
                 * Note that it is *never* valid to have two running instances of the same activity ID.
                 *
                 * See `ActivityIdReusePolicy` for handling activity ID duplication with a *closed* activity.
                 */
                enum ActivityIdConflictPolicy {
                    ACTIVITY_ID_CONFLICT_POLICY_UNSPECIFIED = 0,
                    ACTIVITY_ID_CONFLICT_POLICY_FAIL = 1,
                    ACTIVITY_ID_CONFLICT_POLICY_USE_EXISTING = 2
                }

                /** Whenever this list of command types is changed do change the function shouldBufferEvent in mutableStateBuilder.go to make sure to do the correct event ordering. */
                enum CommandType {
                    COMMAND_TYPE_UNSPECIFIED = 0,
                    COMMAND_TYPE_SCHEDULE_ACTIVITY_TASK = 1,
                    COMMAND_TYPE_REQUEST_CANCEL_ACTIVITY_TASK = 2,
                    COMMAND_TYPE_START_TIMER = 3,
                    COMMAND_TYPE_COMPLETE_WORKFLOW_EXECUTION = 4,
                    COMMAND_TYPE_FAIL_WORKFLOW_EXECUTION = 5,
                    COMMAND_TYPE_CANCEL_TIMER = 6,
                    COMMAND_TYPE_CANCEL_WORKFLOW_EXECUTION = 7,
                    COMMAND_TYPE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION = 8,
                    COMMAND_TYPE_RECORD_MARKER = 9,
                    COMMAND_TYPE_CONTINUE_AS_NEW_WORKFLOW_EXECUTION = 10,
                    COMMAND_TYPE_START_CHILD_WORKFLOW_EXECUTION = 11,
                    COMMAND_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION = 12,
                    COMMAND_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES = 13,
                    COMMAND_TYPE_PROTOCOL_MESSAGE = 14,
                    COMMAND_TYPE_MODIFY_WORKFLOW_PROPERTIES = 16,
                    COMMAND_TYPE_SCHEDULE_NEXUS_OPERATION = 17,
                    COMMAND_TYPE_REQUEST_CANCEL_NEXUS_OPERATION = 18
                }

                /**
                 * ScheduleOverlapPolicy controls what happens when a workflow would be started
                 * by a schedule, and is already running.
                 */
                enum ScheduleOverlapPolicy {
                    SCHEDULE_OVERLAP_POLICY_UNSPECIFIED = 0,
                    SCHEDULE_OVERLAP_POLICY_SKIP = 1,
                    SCHEDULE_OVERLAP_POLICY_BUFFER_ONE = 2,
                    SCHEDULE_OVERLAP_POLICY_BUFFER_ALL = 3,
                    SCHEDULE_OVERLAP_POLICY_CANCEL_OTHER = 4,
                    SCHEDULE_OVERLAP_POLICY_TERMINATE_OTHER = 5,
                    SCHEDULE_OVERLAP_POLICY_ALLOW_ALL = 6
                }
            }
        }

        /** Namespace failure. */
        namespace failure {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of an ApplicationFailureInfo. */
                interface IApplicationFailureInfo {

                    /** ApplicationFailureInfo type */
                    type?: (string|null);

                    /** ApplicationFailureInfo nonRetryable */
                    nonRetryable?: (boolean|null);

                    /** ApplicationFailureInfo details */
                    details?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * next_retry_delay can be used by the client to override the activity
                     * retry interval calculated by the retry policy. Retry attempts will
                     * still be subject to the maximum retries limit and total time limit
                     * defined by the policy.
                     */
                    nextRetryDelay?: (google.protobuf.IDuration|null);

                    /** ApplicationFailureInfo category */
                    category?: (temporal.api.enums.v1.ApplicationErrorCategory|null);
                }

                /** Represents an ApplicationFailureInfo. */
                class ApplicationFailureInfo implements IApplicationFailureInfo {

                    /**
                     * Constructs a new ApplicationFailureInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.IApplicationFailureInfo);

                    /** ApplicationFailureInfo type. */
                    public type: string;

                    /** ApplicationFailureInfo nonRetryable. */
                    public nonRetryable: boolean;

                    /** ApplicationFailureInfo details. */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * next_retry_delay can be used by the client to override the activity
                     * retry interval calculated by the retry policy. Retry attempts will
                     * still be subject to the maximum retries limit and total time limit
                     * defined by the policy.
                     */
                    public nextRetryDelay?: (google.protobuf.IDuration|null);

                    /** ApplicationFailureInfo category. */
                    public category: temporal.api.enums.v1.ApplicationErrorCategory;

                    /**
                     * Creates a new ApplicationFailureInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ApplicationFailureInfo instance
                     */
                    public static create(properties?: temporal.api.failure.v1.IApplicationFailureInfo): temporal.api.failure.v1.ApplicationFailureInfo;

                    /**
                     * Encodes the specified ApplicationFailureInfo message. Does not implicitly {@link temporal.api.failure.v1.ApplicationFailureInfo.verify|verify} messages.
                     * @param message ApplicationFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.IApplicationFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ApplicationFailureInfo message, length delimited. Does not implicitly {@link temporal.api.failure.v1.ApplicationFailureInfo.verify|verify} messages.
                     * @param message ApplicationFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.IApplicationFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ApplicationFailureInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ApplicationFailureInfo
                     * @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): temporal.api.failure.v1.ApplicationFailureInfo;

                    /**
                     * Decodes an ApplicationFailureInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ApplicationFailureInfo
                     * @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)): temporal.api.failure.v1.ApplicationFailureInfo;

                    /**
                     * Creates an ApplicationFailureInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ApplicationFailureInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.ApplicationFailureInfo;

                    /**
                     * Creates a plain object from an ApplicationFailureInfo message. Also converts values to other types if specified.
                     * @param message ApplicationFailureInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.ApplicationFailureInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ApplicationFailureInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ApplicationFailureInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TimeoutFailureInfo. */
                interface ITimeoutFailureInfo {

                    /** TimeoutFailureInfo timeoutType */
                    timeoutType?: (temporal.api.enums.v1.TimeoutType|null);

                    /** TimeoutFailureInfo lastHeartbeatDetails */
                    lastHeartbeatDetails?: (temporal.api.common.v1.IPayloads|null);
                }

                /** Represents a TimeoutFailureInfo. */
                class TimeoutFailureInfo implements ITimeoutFailureInfo {

                    /**
                     * Constructs a new TimeoutFailureInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.ITimeoutFailureInfo);

                    /** TimeoutFailureInfo timeoutType. */
                    public timeoutType: temporal.api.enums.v1.TimeoutType;

                    /** TimeoutFailureInfo lastHeartbeatDetails. */
                    public lastHeartbeatDetails?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Creates a new TimeoutFailureInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TimeoutFailureInfo instance
                     */
                    public static create(properties?: temporal.api.failure.v1.ITimeoutFailureInfo): temporal.api.failure.v1.TimeoutFailureInfo;

                    /**
                     * Encodes the specified TimeoutFailureInfo message. Does not implicitly {@link temporal.api.failure.v1.TimeoutFailureInfo.verify|verify} messages.
                     * @param message TimeoutFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.ITimeoutFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TimeoutFailureInfo message, length delimited. Does not implicitly {@link temporal.api.failure.v1.TimeoutFailureInfo.verify|verify} messages.
                     * @param message TimeoutFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.ITimeoutFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TimeoutFailureInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TimeoutFailureInfo
                     * @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): temporal.api.failure.v1.TimeoutFailureInfo;

                    /**
                     * Decodes a TimeoutFailureInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TimeoutFailureInfo
                     * @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)): temporal.api.failure.v1.TimeoutFailureInfo;

                    /**
                     * Creates a TimeoutFailureInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TimeoutFailureInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.TimeoutFailureInfo;

                    /**
                     * Creates a plain object from a TimeoutFailureInfo message. Also converts values to other types if specified.
                     * @param message TimeoutFailureInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.TimeoutFailureInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TimeoutFailureInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TimeoutFailureInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CanceledFailureInfo. */
                interface ICanceledFailureInfo {

                    /** CanceledFailureInfo details */
                    details?: (temporal.api.common.v1.IPayloads|null);
                }

                /** Represents a CanceledFailureInfo. */
                class CanceledFailureInfo implements ICanceledFailureInfo {

                    /**
                     * Constructs a new CanceledFailureInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.ICanceledFailureInfo);

                    /** CanceledFailureInfo details. */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Creates a new CanceledFailureInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CanceledFailureInfo instance
                     */
                    public static create(properties?: temporal.api.failure.v1.ICanceledFailureInfo): temporal.api.failure.v1.CanceledFailureInfo;

                    /**
                     * Encodes the specified CanceledFailureInfo message. Does not implicitly {@link temporal.api.failure.v1.CanceledFailureInfo.verify|verify} messages.
                     * @param message CanceledFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.ICanceledFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CanceledFailureInfo message, length delimited. Does not implicitly {@link temporal.api.failure.v1.CanceledFailureInfo.verify|verify} messages.
                     * @param message CanceledFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.ICanceledFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CanceledFailureInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CanceledFailureInfo
                     * @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): temporal.api.failure.v1.CanceledFailureInfo;

                    /**
                     * Decodes a CanceledFailureInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CanceledFailureInfo
                     * @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)): temporal.api.failure.v1.CanceledFailureInfo;

                    /**
                     * Creates a CanceledFailureInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CanceledFailureInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.CanceledFailureInfo;

                    /**
                     * Creates a plain object from a CanceledFailureInfo message. Also converts values to other types if specified.
                     * @param message CanceledFailureInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.CanceledFailureInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CanceledFailureInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CanceledFailureInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TerminatedFailureInfo. */
                interface ITerminatedFailureInfo {
                }

                /** Represents a TerminatedFailureInfo. */
                class TerminatedFailureInfo implements ITerminatedFailureInfo {

                    /**
                     * Constructs a new TerminatedFailureInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.ITerminatedFailureInfo);

                    /**
                     * Creates a new TerminatedFailureInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TerminatedFailureInfo instance
                     */
                    public static create(properties?: temporal.api.failure.v1.ITerminatedFailureInfo): temporal.api.failure.v1.TerminatedFailureInfo;

                    /**
                     * Encodes the specified TerminatedFailureInfo message. Does not implicitly {@link temporal.api.failure.v1.TerminatedFailureInfo.verify|verify} messages.
                     * @param message TerminatedFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.ITerminatedFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TerminatedFailureInfo message, length delimited. Does not implicitly {@link temporal.api.failure.v1.TerminatedFailureInfo.verify|verify} messages.
                     * @param message TerminatedFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.ITerminatedFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TerminatedFailureInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TerminatedFailureInfo
                     * @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): temporal.api.failure.v1.TerminatedFailureInfo;

                    /**
                     * Decodes a TerminatedFailureInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TerminatedFailureInfo
                     * @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)): temporal.api.failure.v1.TerminatedFailureInfo;

                    /**
                     * Creates a TerminatedFailureInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TerminatedFailureInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.TerminatedFailureInfo;

                    /**
                     * Creates a plain object from a TerminatedFailureInfo message. Also converts values to other types if specified.
                     * @param message TerminatedFailureInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.TerminatedFailureInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TerminatedFailureInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TerminatedFailureInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ServerFailureInfo. */
                interface IServerFailureInfo {

                    /** ServerFailureInfo nonRetryable */
                    nonRetryable?: (boolean|null);
                }

                /** Represents a ServerFailureInfo. */
                class ServerFailureInfo implements IServerFailureInfo {

                    /**
                     * Constructs a new ServerFailureInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.IServerFailureInfo);

                    /** ServerFailureInfo nonRetryable. */
                    public nonRetryable: boolean;

                    /**
                     * Creates a new ServerFailureInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ServerFailureInfo instance
                     */
                    public static create(properties?: temporal.api.failure.v1.IServerFailureInfo): temporal.api.failure.v1.ServerFailureInfo;

                    /**
                     * Encodes the specified ServerFailureInfo message. Does not implicitly {@link temporal.api.failure.v1.ServerFailureInfo.verify|verify} messages.
                     * @param message ServerFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.IServerFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ServerFailureInfo message, length delimited. Does not implicitly {@link temporal.api.failure.v1.ServerFailureInfo.verify|verify} messages.
                     * @param message ServerFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.IServerFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ServerFailureInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ServerFailureInfo
                     * @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): temporal.api.failure.v1.ServerFailureInfo;

                    /**
                     * Decodes a ServerFailureInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ServerFailureInfo
                     * @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)): temporal.api.failure.v1.ServerFailureInfo;

                    /**
                     * Creates a ServerFailureInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ServerFailureInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.ServerFailureInfo;

                    /**
                     * Creates a plain object from a ServerFailureInfo message. Also converts values to other types if specified.
                     * @param message ServerFailureInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.ServerFailureInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ServerFailureInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ServerFailureInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResetWorkflowFailureInfo. */
                interface IResetWorkflowFailureInfo {

                    /** ResetWorkflowFailureInfo lastHeartbeatDetails */
                    lastHeartbeatDetails?: (temporal.api.common.v1.IPayloads|null);
                }

                /** Represents a ResetWorkflowFailureInfo. */
                class ResetWorkflowFailureInfo implements IResetWorkflowFailureInfo {

                    /**
                     * Constructs a new ResetWorkflowFailureInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.IResetWorkflowFailureInfo);

                    /** ResetWorkflowFailureInfo lastHeartbeatDetails. */
                    public lastHeartbeatDetails?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Creates a new ResetWorkflowFailureInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResetWorkflowFailureInfo instance
                     */
                    public static create(properties?: temporal.api.failure.v1.IResetWorkflowFailureInfo): temporal.api.failure.v1.ResetWorkflowFailureInfo;

                    /**
                     * Encodes the specified ResetWorkflowFailureInfo message. Does not implicitly {@link temporal.api.failure.v1.ResetWorkflowFailureInfo.verify|verify} messages.
                     * @param message ResetWorkflowFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.IResetWorkflowFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResetWorkflowFailureInfo message, length delimited. Does not implicitly {@link temporal.api.failure.v1.ResetWorkflowFailureInfo.verify|verify} messages.
                     * @param message ResetWorkflowFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.IResetWorkflowFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResetWorkflowFailureInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResetWorkflowFailureInfo
                     * @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): temporal.api.failure.v1.ResetWorkflowFailureInfo;

                    /**
                     * Decodes a ResetWorkflowFailureInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResetWorkflowFailureInfo
                     * @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)): temporal.api.failure.v1.ResetWorkflowFailureInfo;

                    /**
                     * Creates a ResetWorkflowFailureInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResetWorkflowFailureInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.ResetWorkflowFailureInfo;

                    /**
                     * Creates a plain object from a ResetWorkflowFailureInfo message. Also converts values to other types if specified.
                     * @param message ResetWorkflowFailureInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.ResetWorkflowFailureInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResetWorkflowFailureInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResetWorkflowFailureInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityFailureInfo. */
                interface IActivityFailureInfo {

                    /** ActivityFailureInfo scheduledEventId */
                    scheduledEventId?: (Long|null);

                    /** ActivityFailureInfo startedEventId */
                    startedEventId?: (Long|null);

                    /** ActivityFailureInfo identity */
                    identity?: (string|null);

                    /** ActivityFailureInfo activityType */
                    activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** ActivityFailureInfo activityId */
                    activityId?: (string|null);

                    /** ActivityFailureInfo retryState */
                    retryState?: (temporal.api.enums.v1.RetryState|null);
                }

                /** Represents an ActivityFailureInfo. */
                class ActivityFailureInfo implements IActivityFailureInfo {

                    /**
                     * Constructs a new ActivityFailureInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.IActivityFailureInfo);

                    /** ActivityFailureInfo scheduledEventId. */
                    public scheduledEventId: Long;

                    /** ActivityFailureInfo startedEventId. */
                    public startedEventId: Long;

                    /** ActivityFailureInfo identity. */
                    public identity: string;

                    /** ActivityFailureInfo activityType. */
                    public activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** ActivityFailureInfo activityId. */
                    public activityId: string;

                    /** ActivityFailureInfo retryState. */
                    public retryState: temporal.api.enums.v1.RetryState;

                    /**
                     * Creates a new ActivityFailureInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityFailureInfo instance
                     */
                    public static create(properties?: temporal.api.failure.v1.IActivityFailureInfo): temporal.api.failure.v1.ActivityFailureInfo;

                    /**
                     * Encodes the specified ActivityFailureInfo message. Does not implicitly {@link temporal.api.failure.v1.ActivityFailureInfo.verify|verify} messages.
                     * @param message ActivityFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.IActivityFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityFailureInfo message, length delimited. Does not implicitly {@link temporal.api.failure.v1.ActivityFailureInfo.verify|verify} messages.
                     * @param message ActivityFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.IActivityFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityFailureInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityFailureInfo
                     * @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): temporal.api.failure.v1.ActivityFailureInfo;

                    /**
                     * Decodes an ActivityFailureInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityFailureInfo
                     * @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)): temporal.api.failure.v1.ActivityFailureInfo;

                    /**
                     * Creates an ActivityFailureInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityFailureInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.ActivityFailureInfo;

                    /**
                     * Creates a plain object from an ActivityFailureInfo message. Also converts values to other types if specified.
                     * @param message ActivityFailureInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.ActivityFailureInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityFailureInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityFailureInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ChildWorkflowExecutionFailureInfo. */
                interface IChildWorkflowExecutionFailureInfo {

                    /** ChildWorkflowExecutionFailureInfo namespace */
                    namespace?: (string|null);

                    /** ChildWorkflowExecutionFailureInfo workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionFailureInfo workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** ChildWorkflowExecutionFailureInfo initiatedEventId */
                    initiatedEventId?: (Long|null);

                    /** ChildWorkflowExecutionFailureInfo startedEventId */
                    startedEventId?: (Long|null);

                    /** ChildWorkflowExecutionFailureInfo retryState */
                    retryState?: (temporal.api.enums.v1.RetryState|null);
                }

                /** Represents a ChildWorkflowExecutionFailureInfo. */
                class ChildWorkflowExecutionFailureInfo implements IChildWorkflowExecutionFailureInfo {

                    /**
                     * Constructs a new ChildWorkflowExecutionFailureInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.IChildWorkflowExecutionFailureInfo);

                    /** ChildWorkflowExecutionFailureInfo namespace. */
                    public namespace: string;

                    /** ChildWorkflowExecutionFailureInfo workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionFailureInfo workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** ChildWorkflowExecutionFailureInfo initiatedEventId. */
                    public initiatedEventId: Long;

                    /** ChildWorkflowExecutionFailureInfo startedEventId. */
                    public startedEventId: Long;

                    /** ChildWorkflowExecutionFailureInfo retryState. */
                    public retryState: temporal.api.enums.v1.RetryState;

                    /**
                     * Creates a new ChildWorkflowExecutionFailureInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ChildWorkflowExecutionFailureInfo instance
                     */
                    public static create(properties?: temporal.api.failure.v1.IChildWorkflowExecutionFailureInfo): temporal.api.failure.v1.ChildWorkflowExecutionFailureInfo;

                    /**
                     * Encodes the specified ChildWorkflowExecutionFailureInfo message. Does not implicitly {@link temporal.api.failure.v1.ChildWorkflowExecutionFailureInfo.verify|verify} messages.
                     * @param message ChildWorkflowExecutionFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.IChildWorkflowExecutionFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ChildWorkflowExecutionFailureInfo message, length delimited. Does not implicitly {@link temporal.api.failure.v1.ChildWorkflowExecutionFailureInfo.verify|verify} messages.
                     * @param message ChildWorkflowExecutionFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.IChildWorkflowExecutionFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ChildWorkflowExecutionFailureInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ChildWorkflowExecutionFailureInfo
                     * @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): temporal.api.failure.v1.ChildWorkflowExecutionFailureInfo;

                    /**
                     * Decodes a ChildWorkflowExecutionFailureInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ChildWorkflowExecutionFailureInfo
                     * @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)): temporal.api.failure.v1.ChildWorkflowExecutionFailureInfo;

                    /**
                     * Creates a ChildWorkflowExecutionFailureInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ChildWorkflowExecutionFailureInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.ChildWorkflowExecutionFailureInfo;

                    /**
                     * Creates a plain object from a ChildWorkflowExecutionFailureInfo message. Also converts values to other types if specified.
                     * @param message ChildWorkflowExecutionFailureInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.ChildWorkflowExecutionFailureInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ChildWorkflowExecutionFailureInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ChildWorkflowExecutionFailureInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusOperationFailureInfo. */
                interface INexusOperationFailureInfo {

                    /** The NexusOperationScheduled event ID. */
                    scheduledEventId?: (Long|null);

                    /** Endpoint name. */
                    endpoint?: (string|null);

                    /** Service name. */
                    service?: (string|null);

                    /** Operation name. */
                    operation?: (string|null);

                    /**
                     * Operation ID - may be empty if the operation completed synchronously.
                     *
                     * Deprecated. Renamed to operation_token.
                     */
                    operationId?: (string|null);

                    /** Operation token - may be empty if the operation completed synchronously. */
                    operationToken?: (string|null);
                }

                /** Representation of the Temporal SDK NexusOperationError object that is returned to workflow callers. */
                class NexusOperationFailureInfo implements INexusOperationFailureInfo {

                    /**
                     * Constructs a new NexusOperationFailureInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.INexusOperationFailureInfo);

                    /** The NexusOperationScheduled event ID. */
                    public scheduledEventId: Long;

                    /** Endpoint name. */
                    public endpoint: string;

                    /** Service name. */
                    public service: string;

                    /** Operation name. */
                    public operation: string;

                    /**
                     * Operation ID - may be empty if the operation completed synchronously.
                     *
                     * Deprecated. Renamed to operation_token.
                     */
                    public operationId: string;

                    /** Operation token - may be empty if the operation completed synchronously. */
                    public operationToken: string;

                    /**
                     * Creates a new NexusOperationFailureInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusOperationFailureInfo instance
                     */
                    public static create(properties?: temporal.api.failure.v1.INexusOperationFailureInfo): temporal.api.failure.v1.NexusOperationFailureInfo;

                    /**
                     * Encodes the specified NexusOperationFailureInfo message. Does not implicitly {@link temporal.api.failure.v1.NexusOperationFailureInfo.verify|verify} messages.
                     * @param message NexusOperationFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.INexusOperationFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusOperationFailureInfo message, length delimited. Does not implicitly {@link temporal.api.failure.v1.NexusOperationFailureInfo.verify|verify} messages.
                     * @param message NexusOperationFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.INexusOperationFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusOperationFailureInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusOperationFailureInfo
                     * @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): temporal.api.failure.v1.NexusOperationFailureInfo;

                    /**
                     * Decodes a NexusOperationFailureInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusOperationFailureInfo
                     * @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)): temporal.api.failure.v1.NexusOperationFailureInfo;

                    /**
                     * Creates a NexusOperationFailureInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusOperationFailureInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.NexusOperationFailureInfo;

                    /**
                     * Creates a plain object from a NexusOperationFailureInfo message. Also converts values to other types if specified.
                     * @param message NexusOperationFailureInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.NexusOperationFailureInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusOperationFailureInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusOperationFailureInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusHandlerFailureInfo. */
                interface INexusHandlerFailureInfo {

                    /**
                     * The Nexus error type as defined in the spec:
                     * https://github.com/nexus-rpc/api/blob/main/SPEC.md#predefined-handler-errors.
                     */
                    type?: (string|null);

                    /** Retry behavior, defaults to the retry behavior of the error type as defined in the spec. */
                    retryBehavior?: (temporal.api.enums.v1.NexusHandlerErrorRetryBehavior|null);
                }

                /** Represents a NexusHandlerFailureInfo. */
                class NexusHandlerFailureInfo implements INexusHandlerFailureInfo {

                    /**
                     * Constructs a new NexusHandlerFailureInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.INexusHandlerFailureInfo);

                    /**
                     * The Nexus error type as defined in the spec:
                     * https://github.com/nexus-rpc/api/blob/main/SPEC.md#predefined-handler-errors.
                     */
                    public type: string;

                    /** Retry behavior, defaults to the retry behavior of the error type as defined in the spec. */
                    public retryBehavior: temporal.api.enums.v1.NexusHandlerErrorRetryBehavior;

                    /**
                     * Creates a new NexusHandlerFailureInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusHandlerFailureInfo instance
                     */
                    public static create(properties?: temporal.api.failure.v1.INexusHandlerFailureInfo): temporal.api.failure.v1.NexusHandlerFailureInfo;

                    /**
                     * Encodes the specified NexusHandlerFailureInfo message. Does not implicitly {@link temporal.api.failure.v1.NexusHandlerFailureInfo.verify|verify} messages.
                     * @param message NexusHandlerFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.INexusHandlerFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusHandlerFailureInfo message, length delimited. Does not implicitly {@link temporal.api.failure.v1.NexusHandlerFailureInfo.verify|verify} messages.
                     * @param message NexusHandlerFailureInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.INexusHandlerFailureInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusHandlerFailureInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusHandlerFailureInfo
                     * @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): temporal.api.failure.v1.NexusHandlerFailureInfo;

                    /**
                     * Decodes a NexusHandlerFailureInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusHandlerFailureInfo
                     * @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)): temporal.api.failure.v1.NexusHandlerFailureInfo;

                    /**
                     * Creates a NexusHandlerFailureInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusHandlerFailureInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.NexusHandlerFailureInfo;

                    /**
                     * Creates a plain object from a NexusHandlerFailureInfo message. Also converts values to other types if specified.
                     * @param message NexusHandlerFailureInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.NexusHandlerFailureInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusHandlerFailureInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusHandlerFailureInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Failure. */
                interface IFailure {

                    /** Failure message */
                    message?: (string|null);

                    /**
                     * The source this Failure originated in, e.g. TypeScriptSDK / JavaSDK
                     * In some SDKs this is used to rehydrate the stack trace into an exception object.
                     */
                    source?: (string|null);

                    /** Failure stackTrace */
                    stackTrace?: (string|null);

                    /**
                     * Alternative way to supply `message` and `stack_trace` and possibly other attributes, used for encryption of
                     * errors originating in user code which might contain sensitive information.
                     * The `encoded_attributes` Payload could represent any serializable object, e.g. JSON object or a `Failure` proto
                     * message.
                     *
                     * SDK authors:
                     * - The SDK should provide a default `encodeFailureAttributes` and `decodeFailureAttributes` implementation that:
                     * - Uses a JSON object to represent `{ message, stack_trace }`.
                     * - Overwrites the original message with "Encoded failure" to indicate that more information could be extracted.
                     * - Overwrites the original stack_trace with an empty string.
                     * - The resulting JSON object is converted to Payload using the default PayloadConverter and should be processed
                     * by the user-provided PayloadCodec
                     *
                     * - If there's demand, we could allow overriding the default SDK implementation to encode other opaque Failure attributes.
                     * (-- api-linter: core::0203::optional=disabled --)
                     */
                    encodedAttributes?: (temporal.api.common.v1.IPayload|null);

                    /** Failure cause */
                    cause?: (temporal.api.failure.v1.IFailure|null);

                    /** Failure applicationFailureInfo */
                    applicationFailureInfo?: (temporal.api.failure.v1.IApplicationFailureInfo|null);

                    /** Failure timeoutFailureInfo */
                    timeoutFailureInfo?: (temporal.api.failure.v1.ITimeoutFailureInfo|null);

                    /** Failure canceledFailureInfo */
                    canceledFailureInfo?: (temporal.api.failure.v1.ICanceledFailureInfo|null);

                    /** Failure terminatedFailureInfo */
                    terminatedFailureInfo?: (temporal.api.failure.v1.ITerminatedFailureInfo|null);

                    /** Failure serverFailureInfo */
                    serverFailureInfo?: (temporal.api.failure.v1.IServerFailureInfo|null);

                    /** Failure resetWorkflowFailureInfo */
                    resetWorkflowFailureInfo?: (temporal.api.failure.v1.IResetWorkflowFailureInfo|null);

                    /** Failure activityFailureInfo */
                    activityFailureInfo?: (temporal.api.failure.v1.IActivityFailureInfo|null);

                    /** Failure childWorkflowExecutionFailureInfo */
                    childWorkflowExecutionFailureInfo?: (temporal.api.failure.v1.IChildWorkflowExecutionFailureInfo|null);

                    /** Failure nexusOperationExecutionFailureInfo */
                    nexusOperationExecutionFailureInfo?: (temporal.api.failure.v1.INexusOperationFailureInfo|null);

                    /** Failure nexusHandlerFailureInfo */
                    nexusHandlerFailureInfo?: (temporal.api.failure.v1.INexusHandlerFailureInfo|null);
                }

                /** Represents a Failure. */
                class Failure implements IFailure {

                    /**
                     * Constructs a new Failure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.IFailure);

                    /** Failure message. */
                    public message: string;

                    /**
                     * The source this Failure originated in, e.g. TypeScriptSDK / JavaSDK
                     * In some SDKs this is used to rehydrate the stack trace into an exception object.
                     */
                    public source: string;

                    /** Failure stackTrace. */
                    public stackTrace: string;

                    /**
                     * Alternative way to supply `message` and `stack_trace` and possibly other attributes, used for encryption of
                     * errors originating in user code which might contain sensitive information.
                     * The `encoded_attributes` Payload could represent any serializable object, e.g. JSON object or a `Failure` proto
                     * message.
                     *
                     * SDK authors:
                     * - The SDK should provide a default `encodeFailureAttributes` and `decodeFailureAttributes` implementation that:
                     * - Uses a JSON object to represent `{ message, stack_trace }`.
                     * - Overwrites the original message with "Encoded failure" to indicate that more information could be extracted.
                     * - Overwrites the original stack_trace with an empty string.
                     * - The resulting JSON object is converted to Payload using the default PayloadConverter and should be processed
                     * by the user-provided PayloadCodec
                     *
                     * - If there's demand, we could allow overriding the default SDK implementation to encode other opaque Failure attributes.
                     * (-- api-linter: core::0203::optional=disabled --)
                     */
                    public encodedAttributes?: (temporal.api.common.v1.IPayload|null);

                    /** Failure cause. */
                    public cause?: (temporal.api.failure.v1.IFailure|null);

                    /** Failure applicationFailureInfo. */
                    public applicationFailureInfo?: (temporal.api.failure.v1.IApplicationFailureInfo|null);

                    /** Failure timeoutFailureInfo. */
                    public timeoutFailureInfo?: (temporal.api.failure.v1.ITimeoutFailureInfo|null);

                    /** Failure canceledFailureInfo. */
                    public canceledFailureInfo?: (temporal.api.failure.v1.ICanceledFailureInfo|null);

                    /** Failure terminatedFailureInfo. */
                    public terminatedFailureInfo?: (temporal.api.failure.v1.ITerminatedFailureInfo|null);

                    /** Failure serverFailureInfo. */
                    public serverFailureInfo?: (temporal.api.failure.v1.IServerFailureInfo|null);

                    /** Failure resetWorkflowFailureInfo. */
                    public resetWorkflowFailureInfo?: (temporal.api.failure.v1.IResetWorkflowFailureInfo|null);

                    /** Failure activityFailureInfo. */
                    public activityFailureInfo?: (temporal.api.failure.v1.IActivityFailureInfo|null);

                    /** Failure childWorkflowExecutionFailureInfo. */
                    public childWorkflowExecutionFailureInfo?: (temporal.api.failure.v1.IChildWorkflowExecutionFailureInfo|null);

                    /** Failure nexusOperationExecutionFailureInfo. */
                    public nexusOperationExecutionFailureInfo?: (temporal.api.failure.v1.INexusOperationFailureInfo|null);

                    /** Failure nexusHandlerFailureInfo. */
                    public nexusHandlerFailureInfo?: (temporal.api.failure.v1.INexusHandlerFailureInfo|null);

                    /** Failure failureInfo. */
                    public failureInfo?: ("applicationFailureInfo"|"timeoutFailureInfo"|"canceledFailureInfo"|"terminatedFailureInfo"|"serverFailureInfo"|"resetWorkflowFailureInfo"|"activityFailureInfo"|"childWorkflowExecutionFailureInfo"|"nexusOperationExecutionFailureInfo"|"nexusHandlerFailureInfo");

                    /**
                     * Creates a new Failure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Failure instance
                     */
                    public static create(properties?: temporal.api.failure.v1.IFailure): temporal.api.failure.v1.Failure;

                    /**
                     * Encodes the specified Failure message. Does not implicitly {@link temporal.api.failure.v1.Failure.verify|verify} messages.
                     * @param message Failure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.IFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Failure message, length delimited. Does not implicitly {@link temporal.api.failure.v1.Failure.verify|verify} messages.
                     * @param message Failure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.IFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Failure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Failure
                     * @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): temporal.api.failure.v1.Failure;

                    /**
                     * Decodes a Failure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Failure
                     * @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)): temporal.api.failure.v1.Failure;

                    /**
                     * Creates a Failure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Failure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.Failure;

                    /**
                     * Creates a plain object from a Failure message. Also converts values to other types if specified.
                     * @param message Failure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.Failure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Failure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Failure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MultiOperationExecutionAborted. */
                interface IMultiOperationExecutionAborted {
                }

                /** Represents a MultiOperationExecutionAborted. */
                class MultiOperationExecutionAborted implements IMultiOperationExecutionAborted {

                    /**
                     * Constructs a new MultiOperationExecutionAborted.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.failure.v1.IMultiOperationExecutionAborted);

                    /**
                     * Creates a new MultiOperationExecutionAborted instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MultiOperationExecutionAborted instance
                     */
                    public static create(properties?: temporal.api.failure.v1.IMultiOperationExecutionAborted): temporal.api.failure.v1.MultiOperationExecutionAborted;

                    /**
                     * Encodes the specified MultiOperationExecutionAborted message. Does not implicitly {@link temporal.api.failure.v1.MultiOperationExecutionAborted.verify|verify} messages.
                     * @param message MultiOperationExecutionAborted message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.failure.v1.IMultiOperationExecutionAborted, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MultiOperationExecutionAborted message, length delimited. Does not implicitly {@link temporal.api.failure.v1.MultiOperationExecutionAborted.verify|verify} messages.
                     * @param message MultiOperationExecutionAborted message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.failure.v1.IMultiOperationExecutionAborted, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MultiOperationExecutionAborted message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MultiOperationExecutionAborted
                     * @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): temporal.api.failure.v1.MultiOperationExecutionAborted;

                    /**
                     * Decodes a MultiOperationExecutionAborted message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MultiOperationExecutionAborted
                     * @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)): temporal.api.failure.v1.MultiOperationExecutionAborted;

                    /**
                     * Creates a MultiOperationExecutionAborted message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MultiOperationExecutionAborted
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.failure.v1.MultiOperationExecutionAborted;

                    /**
                     * Creates a plain object from a MultiOperationExecutionAborted message. Also converts values to other types if specified.
                     * @param message MultiOperationExecutionAborted
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.failure.v1.MultiOperationExecutionAborted, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MultiOperationExecutionAborted to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MultiOperationExecutionAborted
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace update. */
        namespace update {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a WaitPolicy. */
                interface IWaitPolicy {

                    /**
                     * Indicates the Update lifecycle stage that the Update must reach before
                     * API call is returned.
                     * NOTE: This field works together with API call timeout which is limited by
                     * server timeout (maximum wait time). If server timeout is expired before
                     * user specified timeout, API call returns even if specified stage is not reached.
                     */
                    lifecycleStage?: (temporal.api.enums.v1.UpdateWorkflowExecutionLifecycleStage|null);
                }

                /** Specifies client's intent to wait for Update results. */
                class WaitPolicy implements IWaitPolicy {

                    /**
                     * Constructs a new WaitPolicy.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.update.v1.IWaitPolicy);

                    /**
                     * Indicates the Update lifecycle stage that the Update must reach before
                     * API call is returned.
                     * NOTE: This field works together with API call timeout which is limited by
                     * server timeout (maximum wait time). If server timeout is expired before
                     * user specified timeout, API call returns even if specified stage is not reached.
                     */
                    public lifecycleStage: temporal.api.enums.v1.UpdateWorkflowExecutionLifecycleStage;

                    /**
                     * Creates a new WaitPolicy instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WaitPolicy instance
                     */
                    public static create(properties?: temporal.api.update.v1.IWaitPolicy): temporal.api.update.v1.WaitPolicy;

                    /**
                     * Encodes the specified WaitPolicy message. Does not implicitly {@link temporal.api.update.v1.WaitPolicy.verify|verify} messages.
                     * @param message WaitPolicy message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.update.v1.IWaitPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WaitPolicy message, length delimited. Does not implicitly {@link temporal.api.update.v1.WaitPolicy.verify|verify} messages.
                     * @param message WaitPolicy message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.update.v1.IWaitPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WaitPolicy message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WaitPolicy
                     * @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): temporal.api.update.v1.WaitPolicy;

                    /**
                     * Decodes a WaitPolicy message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WaitPolicy
                     * @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)): temporal.api.update.v1.WaitPolicy;

                    /**
                     * Creates a WaitPolicy message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WaitPolicy
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.update.v1.WaitPolicy;

                    /**
                     * Creates a plain object from a WaitPolicy message. Also converts values to other types if specified.
                     * @param message WaitPolicy
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.update.v1.WaitPolicy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WaitPolicy to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WaitPolicy
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateRef. */
                interface IUpdateRef {

                    /** UpdateRef workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** UpdateRef updateId */
                    updateId?: (string|null);
                }

                /** The data needed by a client to refer to a previously invoked Workflow Update. */
                class UpdateRef implements IUpdateRef {

                    /**
                     * Constructs a new UpdateRef.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.update.v1.IUpdateRef);

                    /** UpdateRef workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** UpdateRef updateId. */
                    public updateId: string;

                    /**
                     * Creates a new UpdateRef instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateRef instance
                     */
                    public static create(properties?: temporal.api.update.v1.IUpdateRef): temporal.api.update.v1.UpdateRef;

                    /**
                     * Encodes the specified UpdateRef message. Does not implicitly {@link temporal.api.update.v1.UpdateRef.verify|verify} messages.
                     * @param message UpdateRef message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.update.v1.IUpdateRef, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateRef message, length delimited. Does not implicitly {@link temporal.api.update.v1.UpdateRef.verify|verify} messages.
                     * @param message UpdateRef message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.update.v1.IUpdateRef, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateRef message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateRef
                     * @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): temporal.api.update.v1.UpdateRef;

                    /**
                     * Decodes an UpdateRef message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateRef
                     * @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)): temporal.api.update.v1.UpdateRef;

                    /**
                     * Creates an UpdateRef message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateRef
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.update.v1.UpdateRef;

                    /**
                     * Creates a plain object from an UpdateRef message. Also converts values to other types if specified.
                     * @param message UpdateRef
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.update.v1.UpdateRef, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateRef to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateRef
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an Outcome. */
                interface IOutcome {

                    /** Outcome success */
                    success?: (temporal.api.common.v1.IPayloads|null);

                    /** Outcome failure */
                    failure?: (temporal.api.failure.v1.IFailure|null);
                }

                /** The outcome of a Workflow Update: success or failure. */
                class Outcome implements IOutcome {

                    /**
                     * Constructs a new Outcome.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.update.v1.IOutcome);

                    /** Outcome success. */
                    public success?: (temporal.api.common.v1.IPayloads|null);

                    /** Outcome failure. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** Outcome value. */
                    public value?: ("success"|"failure");

                    /**
                     * Creates a new Outcome instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Outcome instance
                     */
                    public static create(properties?: temporal.api.update.v1.IOutcome): temporal.api.update.v1.Outcome;

                    /**
                     * Encodes the specified Outcome message. Does not implicitly {@link temporal.api.update.v1.Outcome.verify|verify} messages.
                     * @param message Outcome message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.update.v1.IOutcome, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Outcome message, length delimited. Does not implicitly {@link temporal.api.update.v1.Outcome.verify|verify} messages.
                     * @param message Outcome message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.update.v1.IOutcome, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an Outcome message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Outcome
                     * @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): temporal.api.update.v1.Outcome;

                    /**
                     * Decodes an Outcome message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Outcome
                     * @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)): temporal.api.update.v1.Outcome;

                    /**
                     * Creates an Outcome message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Outcome
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.update.v1.Outcome;

                    /**
                     * Creates a plain object from an Outcome message. Also converts values to other types if specified.
                     * @param message Outcome
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.update.v1.Outcome, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Outcome to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Outcome
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Meta. */
                interface IMeta {

                    /** An ID with workflow-scoped uniqueness for this Update. */
                    updateId?: (string|null);

                    /** A string identifying the agent that requested this Update. */
                    identity?: (string|null);
                }

                /** Metadata about a Workflow Update. */
                class Meta implements IMeta {

                    /**
                     * Constructs a new Meta.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.update.v1.IMeta);

                    /** An ID with workflow-scoped uniqueness for this Update. */
                    public updateId: string;

                    /** A string identifying the agent that requested this Update. */
                    public identity: string;

                    /**
                     * Creates a new Meta instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Meta instance
                     */
                    public static create(properties?: temporal.api.update.v1.IMeta): temporal.api.update.v1.Meta;

                    /**
                     * Encodes the specified Meta message. Does not implicitly {@link temporal.api.update.v1.Meta.verify|verify} messages.
                     * @param message Meta message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.update.v1.IMeta, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Meta message, length delimited. Does not implicitly {@link temporal.api.update.v1.Meta.verify|verify} messages.
                     * @param message Meta message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.update.v1.IMeta, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Meta message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Meta
                     * @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): temporal.api.update.v1.Meta;

                    /**
                     * Decodes a Meta message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Meta
                     * @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)): temporal.api.update.v1.Meta;

                    /**
                     * Creates a Meta message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Meta
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.update.v1.Meta;

                    /**
                     * Creates a plain object from a Meta message. Also converts values to other types if specified.
                     * @param message Meta
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.update.v1.Meta, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Meta to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Meta
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an Input. */
                interface IInput {

                    /**
                     * Headers that are passed with the Update from the requesting entity.
                     * These can include things like auth or tracing tokens.
                     */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** The name of the Update handler to invoke on the target Workflow. */
                    name?: (string|null);

                    /** The arguments to pass to the named Update handler. */
                    args?: (temporal.api.common.v1.IPayloads|null);
                }

                /** Represents an Input. */
                class Input implements IInput {

                    /**
                     * Constructs a new Input.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.update.v1.IInput);

                    /**
                     * Headers that are passed with the Update from the requesting entity.
                     * These can include things like auth or tracing tokens.
                     */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** The name of the Update handler to invoke on the target Workflow. */
                    public name: string;

                    /** The arguments to pass to the named Update handler. */
                    public args?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Creates a new Input instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Input instance
                     */
                    public static create(properties?: temporal.api.update.v1.IInput): temporal.api.update.v1.Input;

                    /**
                     * Encodes the specified Input message. Does not implicitly {@link temporal.api.update.v1.Input.verify|verify} messages.
                     * @param message Input message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.update.v1.IInput, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Input message, length delimited. Does not implicitly {@link temporal.api.update.v1.Input.verify|verify} messages.
                     * @param message Input message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.update.v1.IInput, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an Input message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Input
                     * @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): temporal.api.update.v1.Input;

                    /**
                     * Decodes an Input message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Input
                     * @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)): temporal.api.update.v1.Input;

                    /**
                     * Creates an Input message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Input
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.update.v1.Input;

                    /**
                     * Creates a plain object from an Input message. Also converts values to other types if specified.
                     * @param message Input
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.update.v1.Input, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Input to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Input
                     * @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 meta */
                    meta?: (temporal.api.update.v1.IMeta|null);

                    /** Request input */
                    input?: (temporal.api.update.v1.IInput|null);
                }

                /** The client request that triggers a Workflow Update. */
                class Request implements IRequest {

                    /**
                     * Constructs a new Request.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.update.v1.IRequest);

                    /** Request meta. */
                    public meta?: (temporal.api.update.v1.IMeta|null);

                    /** Request input. */
                    public input?: (temporal.api.update.v1.IInput|null);

                    /**
                     * Creates a new Request instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Request instance
                     */
                    public static create(properties?: temporal.api.update.v1.IRequest): temporal.api.update.v1.Request;

                    /**
                     * Encodes the specified Request message. Does not implicitly {@link temporal.api.update.v1.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: temporal.api.update.v1.IRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Request message, length delimited. Does not implicitly {@link temporal.api.update.v1.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: temporal.api.update.v1.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): temporal.api.update.v1.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)): temporal.api.update.v1.Request;

                    /**
                     * 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 }): temporal.api.update.v1.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: temporal.api.update.v1.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 a Rejection. */
                interface IRejection {

                    /** Rejection rejectedRequestMessageId */
                    rejectedRequestMessageId?: (string|null);

                    /** Rejection rejectedRequestSequencingEventId */
                    rejectedRequestSequencingEventId?: (Long|null);

                    /** Rejection rejectedRequest */
                    rejectedRequest?: (temporal.api.update.v1.IRequest|null);

                    /** Rejection failure */
                    failure?: (temporal.api.failure.v1.IFailure|null);
                }

                /** An Update protocol message indicating that a Workflow Update has been rejected. */
                class Rejection implements IRejection {

                    /**
                     * Constructs a new Rejection.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.update.v1.IRejection);

                    /** Rejection rejectedRequestMessageId. */
                    public rejectedRequestMessageId: string;

                    /** Rejection rejectedRequestSequencingEventId. */
                    public rejectedRequestSequencingEventId: Long;

                    /** Rejection rejectedRequest. */
                    public rejectedRequest?: (temporal.api.update.v1.IRequest|null);

                    /** Rejection failure. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Creates a new Rejection instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Rejection instance
                     */
                    public static create(properties?: temporal.api.update.v1.IRejection): temporal.api.update.v1.Rejection;

                    /**
                     * Encodes the specified Rejection message. Does not implicitly {@link temporal.api.update.v1.Rejection.verify|verify} messages.
                     * @param message Rejection message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.update.v1.IRejection, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Rejection message, length delimited. Does not implicitly {@link temporal.api.update.v1.Rejection.verify|verify} messages.
                     * @param message Rejection message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.update.v1.IRejection, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Rejection message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Rejection
                     * @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): temporal.api.update.v1.Rejection;

                    /**
                     * Decodes a Rejection message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Rejection
                     * @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)): temporal.api.update.v1.Rejection;

                    /**
                     * Creates a Rejection message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Rejection
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.update.v1.Rejection;

                    /**
                     * Creates a plain object from a Rejection message. Also converts values to other types if specified.
                     * @param message Rejection
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.update.v1.Rejection, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Rejection to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Rejection
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an Acceptance. */
                interface IAcceptance {

                    /** Acceptance acceptedRequestMessageId */
                    acceptedRequestMessageId?: (string|null);

                    /** Acceptance acceptedRequestSequencingEventId */
                    acceptedRequestSequencingEventId?: (Long|null);

                    /** Acceptance acceptedRequest */
                    acceptedRequest?: (temporal.api.update.v1.IRequest|null);
                }

                /**
                 * An Update protocol message indicating that a Workflow Update has
                 * been accepted (i.e. passed the worker-side validation phase).
                 */
                class Acceptance implements IAcceptance {

                    /**
                     * Constructs a new Acceptance.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.update.v1.IAcceptance);

                    /** Acceptance acceptedRequestMessageId. */
                    public acceptedRequestMessageId: string;

                    /** Acceptance acceptedRequestSequencingEventId. */
                    public acceptedRequestSequencingEventId: Long;

                    /** Acceptance acceptedRequest. */
                    public acceptedRequest?: (temporal.api.update.v1.IRequest|null);

                    /**
                     * Creates a new Acceptance instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Acceptance instance
                     */
                    public static create(properties?: temporal.api.update.v1.IAcceptance): temporal.api.update.v1.Acceptance;

                    /**
                     * Encodes the specified Acceptance message. Does not implicitly {@link temporal.api.update.v1.Acceptance.verify|verify} messages.
                     * @param message Acceptance message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.update.v1.IAcceptance, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Acceptance message, length delimited. Does not implicitly {@link temporal.api.update.v1.Acceptance.verify|verify} messages.
                     * @param message Acceptance message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.update.v1.IAcceptance, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an Acceptance message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Acceptance
                     * @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): temporal.api.update.v1.Acceptance;

                    /**
                     * Decodes an Acceptance message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Acceptance
                     * @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)): temporal.api.update.v1.Acceptance;

                    /**
                     * Creates an Acceptance message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Acceptance
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.update.v1.Acceptance;

                    /**
                     * Creates a plain object from an Acceptance message. Also converts values to other types if specified.
                     * @param message Acceptance
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.update.v1.Acceptance, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Acceptance to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Acceptance
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Response. */
                interface IResponse {

                    /** Response meta */
                    meta?: (temporal.api.update.v1.IMeta|null);

                    /** Response outcome */
                    outcome?: (temporal.api.update.v1.IOutcome|null);
                }

                /**
                 * An Update protocol message indicating that a Workflow Update has
                 * completed with the contained outcome.
                 */
                class Response implements IResponse {

                    /**
                     * Constructs a new Response.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.update.v1.IResponse);

                    /** Response meta. */
                    public meta?: (temporal.api.update.v1.IMeta|null);

                    /** Response outcome. */
                    public outcome?: (temporal.api.update.v1.IOutcome|null);

                    /**
                     * Creates a new Response instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Response instance
                     */
                    public static create(properties?: temporal.api.update.v1.IResponse): temporal.api.update.v1.Response;

                    /**
                     * Encodes the specified Response message. Does not implicitly {@link temporal.api.update.v1.Response.verify|verify} messages.
                     * @param message Response message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.update.v1.IResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Response message, length delimited. Does not implicitly {@link temporal.api.update.v1.Response.verify|verify} messages.
                     * @param message Response message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.update.v1.IResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Response message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Response
                     * @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): temporal.api.update.v1.Response;

                    /**
                     * Decodes a Response message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Response
                     * @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)): temporal.api.update.v1.Response;

                    /**
                     * Creates a Response message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Response
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.update.v1.Response;

                    /**
                     * Creates a plain object from a Response message. Also converts values to other types if specified.
                     * @param message Response
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.update.v1.Response, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Response to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Response
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace nexus. */
        namespace nexus {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a Failure. */
                interface IFailure {

                    /** Failure message */
                    message?: (string|null);

                    /** Failure stackTrace */
                    stackTrace?: (string|null);

                    /** Failure metadata */
                    metadata?: ({ [k: string]: string }|null);

                    /** UTF-8 encoded JSON serializable details. */
                    details?: (Uint8Array|null);

                    /** Failure cause */
                    cause?: (temporal.api.nexus.v1.IFailure|null);
                }

                /**
                 * A general purpose failure message.
                 * See: https://github.com/nexus-rpc/api/blob/main/SPEC.md#failure
                 */
                class Failure implements IFailure {

                    /**
                     * Constructs a new Failure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.IFailure);

                    /** Failure message. */
                    public message: string;

                    /** Failure stackTrace. */
                    public stackTrace: string;

                    /** Failure metadata. */
                    public metadata: { [k: string]: string };

                    /** UTF-8 encoded JSON serializable details. */
                    public details: Uint8Array;

                    /** Failure cause. */
                    public cause?: (temporal.api.nexus.v1.IFailure|null);

                    /**
                     * Creates a new Failure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Failure instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.IFailure): temporal.api.nexus.v1.Failure;

                    /**
                     * Encodes the specified Failure message. Does not implicitly {@link temporal.api.nexus.v1.Failure.verify|verify} messages.
                     * @param message Failure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.nexus.v1.IFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Failure message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.Failure.verify|verify} messages.
                     * @param message Failure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.nexus.v1.IFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Failure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Failure
                     * @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): temporal.api.nexus.v1.Failure;

                    /**
                     * Decodes a Failure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Failure
                     * @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)): temporal.api.nexus.v1.Failure;

                    /**
                     * Creates a Failure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Failure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.Failure;

                    /**
                     * Creates a plain object from a Failure message. Also converts values to other types if specified.
                     * @param message Failure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.nexus.v1.Failure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Failure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Failure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a HandlerError. */
                interface IHandlerError {

                    /** See https://github.com/nexus-rpc/api/blob/main/SPEC.md#predefined-handler-errors. */
                    errorType?: (string|null);

                    /** HandlerError failure */
                    failure?: (temporal.api.nexus.v1.IFailure|null);

                    /** Retry behavior, defaults to the retry behavior of the error type as defined in the spec. */
                    retryBehavior?: (temporal.api.enums.v1.NexusHandlerErrorRetryBehavior|null);
                }

                /** Represents a HandlerError. */
                class HandlerError implements IHandlerError {

                    /**
                     * Constructs a new HandlerError.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.IHandlerError);

                    /** See https://github.com/nexus-rpc/api/blob/main/SPEC.md#predefined-handler-errors. */
                    public errorType: string;

                    /** HandlerError failure. */
                    public failure?: (temporal.api.nexus.v1.IFailure|null);

                    /** Retry behavior, defaults to the retry behavior of the error type as defined in the spec. */
                    public retryBehavior: temporal.api.enums.v1.NexusHandlerErrorRetryBehavior;

                    /**
                     * Creates a new HandlerError instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns HandlerError instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.IHandlerError): temporal.api.nexus.v1.HandlerError;

                    /**
                     * Encodes the specified HandlerError message. Does not implicitly {@link temporal.api.nexus.v1.HandlerError.verify|verify} messages.
                     * @param message HandlerError message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.nexus.v1.IHandlerError, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified HandlerError message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.HandlerError.verify|verify} messages.
                     * @param message HandlerError message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.nexus.v1.IHandlerError, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a HandlerError message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns HandlerError
                     * @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): temporal.api.nexus.v1.HandlerError;

                    /**
                     * Decodes a HandlerError message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns HandlerError
                     * @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)): temporal.api.nexus.v1.HandlerError;

                    /**
                     * Creates a HandlerError message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns HandlerError
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.HandlerError;

                    /**
                     * Creates a plain object from a HandlerError message. Also converts values to other types if specified.
                     * @param message HandlerError
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.nexus.v1.HandlerError, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this HandlerError to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for HandlerError
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UnsuccessfulOperationError. */
                interface IUnsuccessfulOperationError {

                    /** See https://github.com/nexus-rpc/api/blob/main/SPEC.md#operationinfo. */
                    operationState?: (string|null);

                    /** UnsuccessfulOperationError failure */
                    failure?: (temporal.api.nexus.v1.IFailure|null);
                }

                /** Represents an UnsuccessfulOperationError. */
                class UnsuccessfulOperationError implements IUnsuccessfulOperationError {

                    /**
                     * Constructs a new UnsuccessfulOperationError.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.IUnsuccessfulOperationError);

                    /** See https://github.com/nexus-rpc/api/blob/main/SPEC.md#operationinfo. */
                    public operationState: string;

                    /** UnsuccessfulOperationError failure. */
                    public failure?: (temporal.api.nexus.v1.IFailure|null);

                    /**
                     * Creates a new UnsuccessfulOperationError instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UnsuccessfulOperationError instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.IUnsuccessfulOperationError): temporal.api.nexus.v1.UnsuccessfulOperationError;

                    /**
                     * Encodes the specified UnsuccessfulOperationError message. Does not implicitly {@link temporal.api.nexus.v1.UnsuccessfulOperationError.verify|verify} messages.
                     * @param message UnsuccessfulOperationError message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.nexus.v1.IUnsuccessfulOperationError, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UnsuccessfulOperationError message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.UnsuccessfulOperationError.verify|verify} messages.
                     * @param message UnsuccessfulOperationError message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.nexus.v1.IUnsuccessfulOperationError, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UnsuccessfulOperationError message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UnsuccessfulOperationError
                     * @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): temporal.api.nexus.v1.UnsuccessfulOperationError;

                    /**
                     * Decodes an UnsuccessfulOperationError message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UnsuccessfulOperationError
                     * @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)): temporal.api.nexus.v1.UnsuccessfulOperationError;

                    /**
                     * Creates an UnsuccessfulOperationError message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UnsuccessfulOperationError
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.UnsuccessfulOperationError;

                    /**
                     * Creates a plain object from an UnsuccessfulOperationError message. Also converts values to other types if specified.
                     * @param message UnsuccessfulOperationError
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.nexus.v1.UnsuccessfulOperationError, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UnsuccessfulOperationError to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UnsuccessfulOperationError
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Link. */
                interface ILink {

                    /** See https://github.com/nexus-rpc/api/blob/main/SPEC.md#links. */
                    url?: (string|null);

                    /** Link type */
                    type?: (string|null);
                }

                /** Represents a Link. */
                class Link implements ILink {

                    /**
                     * Constructs a new Link.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.ILink);

                    /** See https://github.com/nexus-rpc/api/blob/main/SPEC.md#links. */
                    public url: string;

                    /** Link type. */
                    public type: string;

                    /**
                     * Creates a new Link instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Link instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.ILink): temporal.api.nexus.v1.Link;

                    /**
                     * Encodes the specified Link message. Does not implicitly {@link temporal.api.nexus.v1.Link.verify|verify} messages.
                     * @param message Link message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.nexus.v1.ILink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Link message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.Link.verify|verify} messages.
                     * @param message Link message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.nexus.v1.ILink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Link message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Link
                     * @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): temporal.api.nexus.v1.Link;

                    /**
                     * Decodes a Link message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Link
                     * @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)): temporal.api.nexus.v1.Link;

                    /**
                     * Creates a Link message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Link
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.Link;

                    /**
                     * Creates a plain object from a Link message. Also converts values to other types if specified.
                     * @param message Link
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.nexus.v1.Link, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Link to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Link
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartOperationRequest. */
                interface IStartOperationRequest {

                    /** Name of service to start the operation in. */
                    service?: (string|null);

                    /** Type of operation to start. */
                    operation?: (string|null);

                    /** A request ID that can be used as an idempotentency key. */
                    requestId?: (string|null);

                    /** Callback URL to call upon completion if the started operation is async. */
                    callback?: (string|null);

                    /** Full request body from the incoming HTTP request. */
                    payload?: (temporal.api.common.v1.IPayload|null);

                    /** Header that is expected to be attached to the callback request when the operation completes. */
                    callbackHeader?: ({ [k: string]: string }|null);

                    /** Links contain caller information and can be attached to the operations started by the handler. */
                    links?: (temporal.api.nexus.v1.ILink[]|null);
                }

                /** A request to start an operation. */
                class StartOperationRequest implements IStartOperationRequest {

                    /**
                     * Constructs a new StartOperationRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.IStartOperationRequest);

                    /** Name of service to start the operation in. */
                    public service: string;

                    /** Type of operation to start. */
                    public operation: string;

                    /** A request ID that can be used as an idempotentency key. */
                    public requestId: string;

                    /** Callback URL to call upon completion if the started operation is async. */
                    public callback: string;

                    /** Full request body from the incoming HTTP request. */
                    public payload?: (temporal.api.common.v1.IPayload|null);

                    /** Header that is expected to be attached to the callback request when the operation completes. */
                    public callbackHeader: { [k: string]: string };

                    /** Links contain caller information and can be attached to the operations started by the handler. */
                    public links: temporal.api.nexus.v1.ILink[];

                    /**
                     * Creates a new StartOperationRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartOperationRequest instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.IStartOperationRequest): temporal.api.nexus.v1.StartOperationRequest;

                    /**
                     * Encodes the specified StartOperationRequest message. Does not implicitly {@link temporal.api.nexus.v1.StartOperationRequest.verify|verify} messages.
                     * @param message StartOperationRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.nexus.v1.IStartOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartOperationRequest message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.StartOperationRequest.verify|verify} messages.
                     * @param message StartOperationRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.nexus.v1.IStartOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartOperationRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartOperationRequest
                     * @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): temporal.api.nexus.v1.StartOperationRequest;

                    /**
                     * Decodes a StartOperationRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartOperationRequest
                     * @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)): temporal.api.nexus.v1.StartOperationRequest;

                    /**
                     * Creates a StartOperationRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartOperationRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.StartOperationRequest;

                    /**
                     * Creates a plain object from a StartOperationRequest message. Also converts values to other types if specified.
                     * @param message StartOperationRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.nexus.v1.StartOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartOperationRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartOperationRequest
                     * @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 {

                    /** Service name. */
                    service?: (string|null);

                    /** Type of operation to cancel. */
                    operation?: (string|null);

                    /**
                     * Operation ID as originally generated by a Handler.
                     *
                     * Deprecated. Renamed to operation_token.
                     */
                    operationId?: (string|null);

                    /** Operation token as originally generated by a Handler. */
                    operationToken?: (string|null);
                }

                /** A request to cancel an operation. */
                class CancelOperationRequest implements ICancelOperationRequest {

                    /**
                     * Constructs a new CancelOperationRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.ICancelOperationRequest);

                    /** Service name. */
                    public service: string;

                    /** Type of operation to cancel. */
                    public operation: string;

                    /**
                     * Operation ID as originally generated by a Handler.
                     *
                     * Deprecated. Renamed to operation_token.
                     */
                    public operationId: string;

                    /** Operation token as originally generated by a Handler. */
                    public operationToken: string;

                    /**
                     * Creates a new CancelOperationRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CancelOperationRequest instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.ICancelOperationRequest): temporal.api.nexus.v1.CancelOperationRequest;

                    /**
                     * Encodes the specified CancelOperationRequest message. Does not implicitly {@link temporal.api.nexus.v1.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: temporal.api.nexus.v1.ICancelOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CancelOperationRequest message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.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: temporal.api.nexus.v1.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): temporal.api.nexus.v1.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)): temporal.api.nexus.v1.CancelOperationRequest;

                    /**
                     * 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 }): temporal.api.nexus.v1.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: temporal.api.nexus.v1.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 Request. */
                interface IRequest {

                    /**
                     * Headers extracted from the original request in the Temporal frontend.
                     * When using Nexus over HTTP, this includes the request's HTTP headers ignoring multiple values.
                     */
                    header?: ({ [k: string]: string }|null);

                    /**
                     * The timestamp when the request was scheduled in the frontend.
                     * (-- api-linter: core::0142::time-field-names=disabled
                     * aip.dev/not-precedent: Not following linter rules. --)
                     */
                    scheduledTime?: (google.protobuf.ITimestamp|null);

                    /** Request capabilities */
                    capabilities?: (temporal.api.nexus.v1.Request.ICapabilities|null);

                    /** Request startOperation */
                    startOperation?: (temporal.api.nexus.v1.IStartOperationRequest|null);

                    /** Request cancelOperation */
                    cancelOperation?: (temporal.api.nexus.v1.ICancelOperationRequest|null);

                    /**
                     * The endpoint this request was addressed to before forwarding to the worker.
                     * Supported from server version 1.30.0.
                     */
                    endpoint?: (string|null);
                }

                /** A Nexus request. */
                class Request implements IRequest {

                    /**
                     * Constructs a new Request.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.IRequest);

                    /**
                     * Headers extracted from the original request in the Temporal frontend.
                     * When using Nexus over HTTP, this includes the request's HTTP headers ignoring multiple values.
                     */
                    public header: { [k: string]: string };

                    /**
                     * The timestamp when the request was scheduled in the frontend.
                     * (-- api-linter: core::0142::time-field-names=disabled
                     * aip.dev/not-precedent: Not following linter rules. --)
                     */
                    public scheduledTime?: (google.protobuf.ITimestamp|null);

                    /** Request capabilities. */
                    public capabilities?: (temporal.api.nexus.v1.Request.ICapabilities|null);

                    /** Request startOperation. */
                    public startOperation?: (temporal.api.nexus.v1.IStartOperationRequest|null);

                    /** Request cancelOperation. */
                    public cancelOperation?: (temporal.api.nexus.v1.ICancelOperationRequest|null);

                    /**
                     * The endpoint this request was addressed to before forwarding to the worker.
                     * Supported from server version 1.30.0.
                     */
                    public endpoint: string;

                    /** Request variant. */
                    public variant?: ("startOperation"|"cancelOperation");

                    /**
                     * Creates a new Request instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Request instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.IRequest): temporal.api.nexus.v1.Request;

                    /**
                     * Encodes the specified Request message. Does not implicitly {@link temporal.api.nexus.v1.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: temporal.api.nexus.v1.IRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Request message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.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: temporal.api.nexus.v1.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): temporal.api.nexus.v1.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)): temporal.api.nexus.v1.Request;

                    /**
                     * 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 }): temporal.api.nexus.v1.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: temporal.api.nexus.v1.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;
                }

                namespace Request {

                    /** Properties of a Capabilities. */
                    interface ICapabilities {

                        /**
                         * If set, handlers may use temporal.api.failure.v1.Failure instances to return failures to the server.
                         * This also allows handler and operation errors to have their own messages and stack traces.
                         */
                        temporalFailureResponses?: (boolean|null);
                    }

                    /** Represents a Capabilities. */
                    class Capabilities implements ICapabilities {

                        /**
                         * Constructs a new Capabilities.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.nexus.v1.Request.ICapabilities);

                        /**
                         * If set, handlers may use temporal.api.failure.v1.Failure instances to return failures to the server.
                         * This also allows handler and operation errors to have their own messages and stack traces.
                         */
                        public temporalFailureResponses: boolean;

                        /**
                         * Creates a new Capabilities instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Capabilities instance
                         */
                        public static create(properties?: temporal.api.nexus.v1.Request.ICapabilities): temporal.api.nexus.v1.Request.Capabilities;

                        /**
                         * Encodes the specified Capabilities message. Does not implicitly {@link temporal.api.nexus.v1.Request.Capabilities.verify|verify} messages.
                         * @param message Capabilities message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.nexus.v1.Request.ICapabilities, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Capabilities message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.Request.Capabilities.verify|verify} messages.
                         * @param message Capabilities message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.nexus.v1.Request.ICapabilities, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Capabilities message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Capabilities
                         * @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): temporal.api.nexus.v1.Request.Capabilities;

                        /**
                         * Decodes a Capabilities message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Capabilities
                         * @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)): temporal.api.nexus.v1.Request.Capabilities;

                        /**
                         * Creates a Capabilities message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Capabilities
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.Request.Capabilities;

                        /**
                         * Creates a plain object from a Capabilities message. Also converts values to other types if specified.
                         * @param message Capabilities
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.nexus.v1.Request.Capabilities, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Capabilities to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Capabilities
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a StartOperationResponse. */
                interface IStartOperationResponse {

                    /** StartOperationResponse syncSuccess */
                    syncSuccess?: (temporal.api.nexus.v1.StartOperationResponse.ISync|null);

                    /** StartOperationResponse asyncSuccess */
                    asyncSuccess?: (temporal.api.nexus.v1.StartOperationResponse.IAsync|null);

                    /**
                     * The operation completed unsuccessfully (failed or canceled).
                     * Deprecated. Use the failure variant instead.
                     */
                    operationError?: (temporal.api.nexus.v1.IUnsuccessfulOperationError|null);

                    /**
                     * The operation completed unsuccessfully (failed or canceled).
                     * Failure object must contain an ApplicationFailureInfo or CanceledFailureInfo object.
                     */
                    failure?: (temporal.api.failure.v1.IFailure|null);
                }

                /** Response variant for StartOperationRequest. */
                class StartOperationResponse implements IStartOperationResponse {

                    /**
                     * Constructs a new StartOperationResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.IStartOperationResponse);

                    /** StartOperationResponse syncSuccess. */
                    public syncSuccess?: (temporal.api.nexus.v1.StartOperationResponse.ISync|null);

                    /** StartOperationResponse asyncSuccess. */
                    public asyncSuccess?: (temporal.api.nexus.v1.StartOperationResponse.IAsync|null);

                    /**
                     * The operation completed unsuccessfully (failed or canceled).
                     * Deprecated. Use the failure variant instead.
                     */
                    public operationError?: (temporal.api.nexus.v1.IUnsuccessfulOperationError|null);

                    /**
                     * The operation completed unsuccessfully (failed or canceled).
                     * Failure object must contain an ApplicationFailureInfo or CanceledFailureInfo object.
                     */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** StartOperationResponse variant. */
                    public variant?: ("syncSuccess"|"asyncSuccess"|"operationError"|"failure");

                    /**
                     * Creates a new StartOperationResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartOperationResponse instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.IStartOperationResponse): temporal.api.nexus.v1.StartOperationResponse;

                    /**
                     * Encodes the specified StartOperationResponse message. Does not implicitly {@link temporal.api.nexus.v1.StartOperationResponse.verify|verify} messages.
                     * @param message StartOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.nexus.v1.IStartOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartOperationResponse message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.StartOperationResponse.verify|verify} messages.
                     * @param message StartOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.nexus.v1.IStartOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartOperationResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartOperationResponse
                     * @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): temporal.api.nexus.v1.StartOperationResponse;

                    /**
                     * Decodes a StartOperationResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartOperationResponse
                     * @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)): temporal.api.nexus.v1.StartOperationResponse;

                    /**
                     * Creates a StartOperationResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartOperationResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.StartOperationResponse;

                    /**
                     * Creates a plain object from a StartOperationResponse message. Also converts values to other types if specified.
                     * @param message StartOperationResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.nexus.v1.StartOperationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartOperationResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartOperationResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace StartOperationResponse {

                    /** Properties of a Sync. */
                    interface ISync {

                        /** Sync payload */
                        payload?: (temporal.api.common.v1.IPayload|null);

                        /** Sync links */
                        links?: (temporal.api.nexus.v1.ILink[]|null);
                    }

                    /** An operation completed successfully. */
                    class Sync implements ISync {

                        /**
                         * Constructs a new Sync.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.nexus.v1.StartOperationResponse.ISync);

                        /** Sync payload. */
                        public payload?: (temporal.api.common.v1.IPayload|null);

                        /** Sync links. */
                        public links: temporal.api.nexus.v1.ILink[];

                        /**
                         * Creates a new Sync instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Sync instance
                         */
                        public static create(properties?: temporal.api.nexus.v1.StartOperationResponse.ISync): temporal.api.nexus.v1.StartOperationResponse.Sync;

                        /**
                         * Encodes the specified Sync message. Does not implicitly {@link temporal.api.nexus.v1.StartOperationResponse.Sync.verify|verify} messages.
                         * @param message Sync message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.nexus.v1.StartOperationResponse.ISync, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Sync message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.StartOperationResponse.Sync.verify|verify} messages.
                         * @param message Sync message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.nexus.v1.StartOperationResponse.ISync, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Sync message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Sync
                         * @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): temporal.api.nexus.v1.StartOperationResponse.Sync;

                        /**
                         * Decodes a Sync message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Sync
                         * @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)): temporal.api.nexus.v1.StartOperationResponse.Sync;

                        /**
                         * Creates a Sync message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Sync
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.StartOperationResponse.Sync;

                        /**
                         * Creates a plain object from a Sync message. Also converts values to other types if specified.
                         * @param message Sync
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.nexus.v1.StartOperationResponse.Sync, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Sync to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Sync
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an Async. */
                    interface IAsync {

                        /** Deprecated. Renamed to operation_token. */
                        operationId?: (string|null);

                        /** Async links */
                        links?: (temporal.api.nexus.v1.ILink[]|null);

                        /** Async operationToken */
                        operationToken?: (string|null);
                    }

                    /**
                     * The operation will complete asynchronously.
                     * The returned ID can be used to reference this operation.
                     */
                    class Async implements IAsync {

                        /**
                         * Constructs a new Async.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.nexus.v1.StartOperationResponse.IAsync);

                        /** Deprecated. Renamed to operation_token. */
                        public operationId: string;

                        /** Async links. */
                        public links: temporal.api.nexus.v1.ILink[];

                        /** Async operationToken. */
                        public operationToken: string;

                        /**
                         * Creates a new Async instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Async instance
                         */
                        public static create(properties?: temporal.api.nexus.v1.StartOperationResponse.IAsync): temporal.api.nexus.v1.StartOperationResponse.Async;

                        /**
                         * Encodes the specified Async message. Does not implicitly {@link temporal.api.nexus.v1.StartOperationResponse.Async.verify|verify} messages.
                         * @param message Async message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.nexus.v1.StartOperationResponse.IAsync, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Async message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.StartOperationResponse.Async.verify|verify} messages.
                         * @param message Async message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.nexus.v1.StartOperationResponse.IAsync, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Async message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Async
                         * @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): temporal.api.nexus.v1.StartOperationResponse.Async;

                        /**
                         * Decodes an Async message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Async
                         * @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)): temporal.api.nexus.v1.StartOperationResponse.Async;

                        /**
                         * Creates an Async message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Async
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.StartOperationResponse.Async;

                        /**
                         * Creates a plain object from an Async message. Also converts values to other types if specified.
                         * @param message Async
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.nexus.v1.StartOperationResponse.Async, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Async to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Async
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a CancelOperationResponse. */
                interface ICancelOperationResponse {
                }

                /** Response variant for CancelOperationRequest. */
                class CancelOperationResponse implements ICancelOperationResponse {

                    /**
                     * Constructs a new CancelOperationResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.ICancelOperationResponse);

                    /**
                     * Creates a new CancelOperationResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CancelOperationResponse instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.ICancelOperationResponse): temporal.api.nexus.v1.CancelOperationResponse;

                    /**
                     * Encodes the specified CancelOperationResponse message. Does not implicitly {@link temporal.api.nexus.v1.CancelOperationResponse.verify|verify} messages.
                     * @param message CancelOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.nexus.v1.ICancelOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CancelOperationResponse message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.CancelOperationResponse.verify|verify} messages.
                     * @param message CancelOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.nexus.v1.ICancelOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CancelOperationResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CancelOperationResponse
                     * @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): temporal.api.nexus.v1.CancelOperationResponse;

                    /**
                     * Decodes a CancelOperationResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CancelOperationResponse
                     * @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)): temporal.api.nexus.v1.CancelOperationResponse;

                    /**
                     * Creates a CancelOperationResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CancelOperationResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.CancelOperationResponse;

                    /**
                     * Creates a plain object from a CancelOperationResponse message. Also converts values to other types if specified.
                     * @param message CancelOperationResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.nexus.v1.CancelOperationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CancelOperationResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CancelOperationResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Response. */
                interface IResponse {

                    /** Response startOperation */
                    startOperation?: (temporal.api.nexus.v1.IStartOperationResponse|null);

                    /** Response cancelOperation */
                    cancelOperation?: (temporal.api.nexus.v1.ICancelOperationResponse|null);
                }

                /** A response indicating that the handler has successfully processed a request. */
                class Response implements IResponse {

                    /**
                     * Constructs a new Response.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.IResponse);

                    /** Response startOperation. */
                    public startOperation?: (temporal.api.nexus.v1.IStartOperationResponse|null);

                    /** Response cancelOperation. */
                    public cancelOperation?: (temporal.api.nexus.v1.ICancelOperationResponse|null);

                    /** Variant must correlate to the corresponding Request's variant. */
                    public variant?: ("startOperation"|"cancelOperation");

                    /**
                     * Creates a new Response instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Response instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.IResponse): temporal.api.nexus.v1.Response;

                    /**
                     * Encodes the specified Response message. Does not implicitly {@link temporal.api.nexus.v1.Response.verify|verify} messages.
                     * @param message Response message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.nexus.v1.IResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Response message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.Response.verify|verify} messages.
                     * @param message Response message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.nexus.v1.IResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Response message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Response
                     * @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): temporal.api.nexus.v1.Response;

                    /**
                     * Decodes a Response message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Response
                     * @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)): temporal.api.nexus.v1.Response;

                    /**
                     * Creates a Response message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Response
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.Response;

                    /**
                     * Creates a plain object from a Response message. Also converts values to other types if specified.
                     * @param message Response
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.nexus.v1.Response, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Response to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Response
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an Endpoint. */
                interface IEndpoint {

                    /** Data version for this endpoint, incremented for every update issued via the UpdateNexusEndpoint API. */
                    version?: (Long|null);

                    /** Unique server-generated endpoint ID. */
                    id?: (string|null);

                    /** Spec for the endpoint. */
                    spec?: (temporal.api.nexus.v1.IEndpointSpec|null);

                    /**
                     * The date and time when the endpoint was created.
                     * (-- api-linter: core::0142::time-field-names=disabled
                     * aip.dev/not-precedent: Not following linter rules. --)
                     */
                    createdTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * The date and time when the endpoint was last modified.
                     * Will not be set if the endpoint has never been modified.
                     * (-- api-linter: core::0142::time-field-names=disabled
                     * aip.dev/not-precedent: Not following linter rules. --)
                     */
                    lastModifiedTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Server exposed URL prefix for invocation of operations on this endpoint.
                     * This doesn't include the protocol, hostname or port as the server does not know how it should be accessed
                     * publicly. The URL is stable in the face of endpoint renames.
                     */
                    urlPrefix?: (string|null);
                }

                /** A cluster-global binding from an endpoint ID to a target for dispatching incoming Nexus requests. */
                class Endpoint implements IEndpoint {

                    /**
                     * Constructs a new Endpoint.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.IEndpoint);

                    /** Data version for this endpoint, incremented for every update issued via the UpdateNexusEndpoint API. */
                    public version: Long;

                    /** Unique server-generated endpoint ID. */
                    public id: string;

                    /** Spec for the endpoint. */
                    public spec?: (temporal.api.nexus.v1.IEndpointSpec|null);

                    /**
                     * The date and time when the endpoint was created.
                     * (-- api-linter: core::0142::time-field-names=disabled
                     * aip.dev/not-precedent: Not following linter rules. --)
                     */
                    public createdTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * The date and time when the endpoint was last modified.
                     * Will not be set if the endpoint has never been modified.
                     * (-- api-linter: core::0142::time-field-names=disabled
                     * aip.dev/not-precedent: Not following linter rules. --)
                     */
                    public lastModifiedTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Server exposed URL prefix for invocation of operations on this endpoint.
                     * This doesn't include the protocol, hostname or port as the server does not know how it should be accessed
                     * publicly. The URL is stable in the face of endpoint renames.
                     */
                    public urlPrefix: string;

                    /**
                     * Creates a new Endpoint instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Endpoint instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.IEndpoint): temporal.api.nexus.v1.Endpoint;

                    /**
                     * Encodes the specified Endpoint message. Does not implicitly {@link temporal.api.nexus.v1.Endpoint.verify|verify} messages.
                     * @param message Endpoint message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.nexus.v1.IEndpoint, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Endpoint message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.Endpoint.verify|verify} messages.
                     * @param message Endpoint message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.nexus.v1.IEndpoint, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an Endpoint message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Endpoint
                     * @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): temporal.api.nexus.v1.Endpoint;

                    /**
                     * Decodes an Endpoint message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Endpoint
                     * @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)): temporal.api.nexus.v1.Endpoint;

                    /**
                     * Creates an Endpoint message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Endpoint
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.Endpoint;

                    /**
                     * Creates a plain object from an Endpoint message. Also converts values to other types if specified.
                     * @param message Endpoint
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.nexus.v1.Endpoint, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Endpoint to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Endpoint
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an EndpointSpec. */
                interface IEndpointSpec {

                    /**
                     * Endpoint name, unique for this cluster. Must match `[a-zA-Z_][a-zA-Z0-9_]*`.
                     * Renaming an endpoint breaks all workflow callers that reference this endpoint, causing operations to fail.
                     */
                    name?: (string|null);

                    /**
                     * Markdown description serialized as a single JSON string.
                     * If the Payload is encrypted, the UI and CLI may decrypt with the configured codec server endpoint.
                     * By default, the server enforces a limit of 20,000 bytes for this entire payload.
                     */
                    description?: (temporal.api.common.v1.IPayload|null);

                    /** Target to route requests to. */
                    target?: (temporal.api.nexus.v1.IEndpointTarget|null);
                }

                /** Contains mutable fields for an Endpoint. */
                class EndpointSpec implements IEndpointSpec {

                    /**
                     * Constructs a new EndpointSpec.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.IEndpointSpec);

                    /**
                     * Endpoint name, unique for this cluster. Must match `[a-zA-Z_][a-zA-Z0-9_]*`.
                     * Renaming an endpoint breaks all workflow callers that reference this endpoint, causing operations to fail.
                     */
                    public name: string;

                    /**
                     * Markdown description serialized as a single JSON string.
                     * If the Payload is encrypted, the UI and CLI may decrypt with the configured codec server endpoint.
                     * By default, the server enforces a limit of 20,000 bytes for this entire payload.
                     */
                    public description?: (temporal.api.common.v1.IPayload|null);

                    /** Target to route requests to. */
                    public target?: (temporal.api.nexus.v1.IEndpointTarget|null);

                    /**
                     * Creates a new EndpointSpec instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns EndpointSpec instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.IEndpointSpec): temporal.api.nexus.v1.EndpointSpec;

                    /**
                     * Encodes the specified EndpointSpec message. Does not implicitly {@link temporal.api.nexus.v1.EndpointSpec.verify|verify} messages.
                     * @param message EndpointSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.nexus.v1.IEndpointSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified EndpointSpec message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.EndpointSpec.verify|verify} messages.
                     * @param message EndpointSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.nexus.v1.IEndpointSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an EndpointSpec message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns EndpointSpec
                     * @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): temporal.api.nexus.v1.EndpointSpec;

                    /**
                     * Decodes an EndpointSpec message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns EndpointSpec
                     * @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)): temporal.api.nexus.v1.EndpointSpec;

                    /**
                     * Creates an EndpointSpec message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns EndpointSpec
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.EndpointSpec;

                    /**
                     * Creates a plain object from an EndpointSpec message. Also converts values to other types if specified.
                     * @param message EndpointSpec
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.nexus.v1.EndpointSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this EndpointSpec to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for EndpointSpec
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an EndpointTarget. */
                interface IEndpointTarget {

                    /** EndpointTarget worker */
                    worker?: (temporal.api.nexus.v1.EndpointTarget.IWorker|null);

                    /** EndpointTarget external */
                    external?: (temporal.api.nexus.v1.EndpointTarget.IExternal|null);
                }

                /** Target to route requests to. */
                class EndpointTarget implements IEndpointTarget {

                    /**
                     * Constructs a new EndpointTarget.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.nexus.v1.IEndpointTarget);

                    /** EndpointTarget worker. */
                    public worker?: (temporal.api.nexus.v1.EndpointTarget.IWorker|null);

                    /** EndpointTarget external. */
                    public external?: (temporal.api.nexus.v1.EndpointTarget.IExternal|null);

                    /** EndpointTarget variant. */
                    public variant?: ("worker"|"external");

                    /**
                     * Creates a new EndpointTarget instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns EndpointTarget instance
                     */
                    public static create(properties?: temporal.api.nexus.v1.IEndpointTarget): temporal.api.nexus.v1.EndpointTarget;

                    /**
                     * Encodes the specified EndpointTarget message. Does not implicitly {@link temporal.api.nexus.v1.EndpointTarget.verify|verify} messages.
                     * @param message EndpointTarget message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.nexus.v1.IEndpointTarget, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified EndpointTarget message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.EndpointTarget.verify|verify} messages.
                     * @param message EndpointTarget message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.nexus.v1.IEndpointTarget, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an EndpointTarget message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns EndpointTarget
                     * @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): temporal.api.nexus.v1.EndpointTarget;

                    /**
                     * Decodes an EndpointTarget message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns EndpointTarget
                     * @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)): temporal.api.nexus.v1.EndpointTarget;

                    /**
                     * Creates an EndpointTarget message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns EndpointTarget
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.EndpointTarget;

                    /**
                     * Creates a plain object from an EndpointTarget message. Also converts values to other types if specified.
                     * @param message EndpointTarget
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.nexus.v1.EndpointTarget, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this EndpointTarget to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for EndpointTarget
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace EndpointTarget {

                    /** Properties of a Worker. */
                    interface IWorker {

                        /** Namespace to route requests to. */
                        namespace?: (string|null);

                        /** Nexus task queue to route requests to. */
                        taskQueue?: (string|null);
                    }

                    /** Target a worker polling on a Nexus task queue in a specific namespace. */
                    class Worker implements IWorker {

                        /**
                         * Constructs a new Worker.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.nexus.v1.EndpointTarget.IWorker);

                        /** Namespace to route requests to. */
                        public namespace: string;

                        /** Nexus task queue to route requests to. */
                        public taskQueue: string;

                        /**
                         * Creates a new Worker instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Worker instance
                         */
                        public static create(properties?: temporal.api.nexus.v1.EndpointTarget.IWorker): temporal.api.nexus.v1.EndpointTarget.Worker;

                        /**
                         * Encodes the specified Worker message. Does not implicitly {@link temporal.api.nexus.v1.EndpointTarget.Worker.verify|verify} messages.
                         * @param message Worker message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.nexus.v1.EndpointTarget.IWorker, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Worker message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.EndpointTarget.Worker.verify|verify} messages.
                         * @param message Worker message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.nexus.v1.EndpointTarget.IWorker, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Worker message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Worker
                         * @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): temporal.api.nexus.v1.EndpointTarget.Worker;

                        /**
                         * Decodes a Worker message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Worker
                         * @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)): temporal.api.nexus.v1.EndpointTarget.Worker;

                        /**
                         * Creates a Worker message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Worker
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.EndpointTarget.Worker;

                        /**
                         * Creates a plain object from a Worker message. Also converts values to other types if specified.
                         * @param message Worker
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.nexus.v1.EndpointTarget.Worker, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Worker to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Worker
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an External. */
                    interface IExternal {

                        /** URL to call. */
                        url?: (string|null);
                    }

                    /**
                     * Target an external server by URL.
                     * At a later point, this will support providing credentials, in the meantime, an http.RoundTripper can be injected
                     * into the server to modify the request.
                     */
                    class External implements IExternal {

                        /**
                         * Constructs a new External.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.nexus.v1.EndpointTarget.IExternal);

                        /** URL to call. */
                        public url: string;

                        /**
                         * Creates a new External instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns External instance
                         */
                        public static create(properties?: temporal.api.nexus.v1.EndpointTarget.IExternal): temporal.api.nexus.v1.EndpointTarget.External;

                        /**
                         * Encodes the specified External message. Does not implicitly {@link temporal.api.nexus.v1.EndpointTarget.External.verify|verify} messages.
                         * @param message External message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.nexus.v1.EndpointTarget.IExternal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified External message, length delimited. Does not implicitly {@link temporal.api.nexus.v1.EndpointTarget.External.verify|verify} messages.
                         * @param message External message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.nexus.v1.EndpointTarget.IExternal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an External message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns External
                         * @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): temporal.api.nexus.v1.EndpointTarget.External;

                        /**
                         * Decodes an External message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns External
                         * @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)): temporal.api.nexus.v1.EndpointTarget.External;

                        /**
                         * Creates an External message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns External
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.nexus.v1.EndpointTarget.External;

                        /**
                         * Creates a plain object from an External message. Also converts values to other types if specified.
                         * @param message External
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.nexus.v1.EndpointTarget.External, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this External to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for External
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }
            }
        }

        /** Namespace workflowservice. */
        namespace workflowservice {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a RegisterNamespaceRequest. */
                interface IRegisterNamespaceRequest {

                    /** RegisterNamespaceRequest namespace */
                    namespace?: (string|null);

                    /** RegisterNamespaceRequest description */
                    description?: (string|null);

                    /** RegisterNamespaceRequest ownerEmail */
                    ownerEmail?: (string|null);

                    /** RegisterNamespaceRequest workflowExecutionRetentionPeriod */
                    workflowExecutionRetentionPeriod?: (google.protobuf.IDuration|null);

                    /** RegisterNamespaceRequest clusters */
                    clusters?: (temporal.api.replication.v1.IClusterReplicationConfig[]|null);

                    /** RegisterNamespaceRequest activeClusterName */
                    activeClusterName?: (string|null);

                    /** A key-value map for any customized purpose. */
                    data?: ({ [k: string]: string }|null);

                    /** RegisterNamespaceRequest securityToken */
                    securityToken?: (string|null);

                    /** RegisterNamespaceRequest isGlobalNamespace */
                    isGlobalNamespace?: (boolean|null);

                    /** If unspecified (ARCHIVAL_STATE_UNSPECIFIED) then default server configuration is used. */
                    historyArchivalState?: (temporal.api.enums.v1.ArchivalState|null);

                    /** RegisterNamespaceRequest historyArchivalUri */
                    historyArchivalUri?: (string|null);

                    /** If unspecified (ARCHIVAL_STATE_UNSPECIFIED) then default server configuration is used. */
                    visibilityArchivalState?: (temporal.api.enums.v1.ArchivalState|null);

                    /** RegisterNamespaceRequest visibilityArchivalUri */
                    visibilityArchivalUri?: (string|null);
                }

                /** Represents a RegisterNamespaceRequest. */
                class RegisterNamespaceRequest implements IRegisterNamespaceRequest {

                    /**
                     * Constructs a new RegisterNamespaceRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRegisterNamespaceRequest);

                    /** RegisterNamespaceRequest namespace. */
                    public namespace: string;

                    /** RegisterNamespaceRequest description. */
                    public description: string;

                    /** RegisterNamespaceRequest ownerEmail. */
                    public ownerEmail: string;

                    /** RegisterNamespaceRequest workflowExecutionRetentionPeriod. */
                    public workflowExecutionRetentionPeriod?: (google.protobuf.IDuration|null);

                    /** RegisterNamespaceRequest clusters. */
                    public clusters: temporal.api.replication.v1.IClusterReplicationConfig[];

                    /** RegisterNamespaceRequest activeClusterName. */
                    public activeClusterName: string;

                    /** A key-value map for any customized purpose. */
                    public data: { [k: string]: string };

                    /** RegisterNamespaceRequest securityToken. */
                    public securityToken: string;

                    /** RegisterNamespaceRequest isGlobalNamespace. */
                    public isGlobalNamespace: boolean;

                    /** If unspecified (ARCHIVAL_STATE_UNSPECIFIED) then default server configuration is used. */
                    public historyArchivalState: temporal.api.enums.v1.ArchivalState;

                    /** RegisterNamespaceRequest historyArchivalUri. */
                    public historyArchivalUri: string;

                    /** If unspecified (ARCHIVAL_STATE_UNSPECIFIED) then default server configuration is used. */
                    public visibilityArchivalState: temporal.api.enums.v1.ArchivalState;

                    /** RegisterNamespaceRequest visibilityArchivalUri. */
                    public visibilityArchivalUri: string;

                    /**
                     * Creates a new RegisterNamespaceRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RegisterNamespaceRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRegisterNamespaceRequest): temporal.api.workflowservice.v1.RegisterNamespaceRequest;

                    /**
                     * Encodes the specified RegisterNamespaceRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RegisterNamespaceRequest.verify|verify} messages.
                     * @param message RegisterNamespaceRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRegisterNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RegisterNamespaceRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RegisterNamespaceRequest.verify|verify} messages.
                     * @param message RegisterNamespaceRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRegisterNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RegisterNamespaceRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RegisterNamespaceRequest
                     * @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): temporal.api.workflowservice.v1.RegisterNamespaceRequest;

                    /**
                     * Decodes a RegisterNamespaceRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RegisterNamespaceRequest
                     * @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)): temporal.api.workflowservice.v1.RegisterNamespaceRequest;

                    /**
                     * Creates a RegisterNamespaceRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RegisterNamespaceRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RegisterNamespaceRequest;

                    /**
                     * Creates a plain object from a RegisterNamespaceRequest message. Also converts values to other types if specified.
                     * @param message RegisterNamespaceRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RegisterNamespaceRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RegisterNamespaceRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RegisterNamespaceRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RegisterNamespaceResponse. */
                interface IRegisterNamespaceResponse {
                }

                /** Represents a RegisterNamespaceResponse. */
                class RegisterNamespaceResponse implements IRegisterNamespaceResponse {

                    /**
                     * Constructs a new RegisterNamespaceResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRegisterNamespaceResponse);

                    /**
                     * Creates a new RegisterNamespaceResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RegisterNamespaceResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRegisterNamespaceResponse): temporal.api.workflowservice.v1.RegisterNamespaceResponse;

                    /**
                     * Encodes the specified RegisterNamespaceResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RegisterNamespaceResponse.verify|verify} messages.
                     * @param message RegisterNamespaceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRegisterNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RegisterNamespaceResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RegisterNamespaceResponse.verify|verify} messages.
                     * @param message RegisterNamespaceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRegisterNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RegisterNamespaceResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RegisterNamespaceResponse
                     * @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): temporal.api.workflowservice.v1.RegisterNamespaceResponse;

                    /**
                     * Decodes a RegisterNamespaceResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RegisterNamespaceResponse
                     * @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)): temporal.api.workflowservice.v1.RegisterNamespaceResponse;

                    /**
                     * Creates a RegisterNamespaceResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RegisterNamespaceResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RegisterNamespaceResponse;

                    /**
                     * Creates a plain object from a RegisterNamespaceResponse message. Also converts values to other types if specified.
                     * @param message RegisterNamespaceResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RegisterNamespaceResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RegisterNamespaceResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RegisterNamespaceResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListNamespacesRequest. */
                interface IListNamespacesRequest {

                    /** ListNamespacesRequest pageSize */
                    pageSize?: (number|null);

                    /** ListNamespacesRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);

                    /** ListNamespacesRequest namespaceFilter */
                    namespaceFilter?: (temporal.api.namespace.v1.INamespaceFilter|null);
                }

                /** Represents a ListNamespacesRequest. */
                class ListNamespacesRequest implements IListNamespacesRequest {

                    /**
                     * Constructs a new ListNamespacesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListNamespacesRequest);

                    /** ListNamespacesRequest pageSize. */
                    public pageSize: number;

                    /** ListNamespacesRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /** ListNamespacesRequest namespaceFilter. */
                    public namespaceFilter?: (temporal.api.namespace.v1.INamespaceFilter|null);

                    /**
                     * Creates a new ListNamespacesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListNamespacesRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListNamespacesRequest): temporal.api.workflowservice.v1.ListNamespacesRequest;

                    /**
                     * Encodes the specified ListNamespacesRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListNamespacesRequest.verify|verify} messages.
                     * @param message ListNamespacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListNamespacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListNamespacesRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListNamespacesRequest.verify|verify} messages.
                     * @param message ListNamespacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListNamespacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListNamespacesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListNamespacesRequest
                     * @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): temporal.api.workflowservice.v1.ListNamespacesRequest;

                    /**
                     * Decodes a ListNamespacesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListNamespacesRequest
                     * @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)): temporal.api.workflowservice.v1.ListNamespacesRequest;

                    /**
                     * Creates a ListNamespacesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListNamespacesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListNamespacesRequest;

                    /**
                     * Creates a plain object from a ListNamespacesRequest message. Also converts values to other types if specified.
                     * @param message ListNamespacesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListNamespacesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListNamespacesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListNamespacesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListNamespacesResponse. */
                interface IListNamespacesResponse {

                    /** ListNamespacesResponse namespaces */
                    namespaces?: (temporal.api.workflowservice.v1.IDescribeNamespaceResponse[]|null);

                    /** ListNamespacesResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListNamespacesResponse. */
                class ListNamespacesResponse implements IListNamespacesResponse {

                    /**
                     * Constructs a new ListNamespacesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListNamespacesResponse);

                    /** ListNamespacesResponse namespaces. */
                    public namespaces: temporal.api.workflowservice.v1.IDescribeNamespaceResponse[];

                    /** ListNamespacesResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListNamespacesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListNamespacesResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListNamespacesResponse): temporal.api.workflowservice.v1.ListNamespacesResponse;

                    /**
                     * Encodes the specified ListNamespacesResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListNamespacesResponse.verify|verify} messages.
                     * @param message ListNamespacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListNamespacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListNamespacesResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListNamespacesResponse.verify|verify} messages.
                     * @param message ListNamespacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListNamespacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListNamespacesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListNamespacesResponse
                     * @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): temporal.api.workflowservice.v1.ListNamespacesResponse;

                    /**
                     * Decodes a ListNamespacesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListNamespacesResponse
                     * @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)): temporal.api.workflowservice.v1.ListNamespacesResponse;

                    /**
                     * Creates a ListNamespacesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListNamespacesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListNamespacesResponse;

                    /**
                     * Creates a plain object from a ListNamespacesResponse message. Also converts values to other types if specified.
                     * @param message ListNamespacesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListNamespacesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListNamespacesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListNamespacesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeNamespaceRequest. */
                interface IDescribeNamespaceRequest {

                    /** DescribeNamespaceRequest namespace */
                    namespace?: (string|null);

                    /** DescribeNamespaceRequest id */
                    id?: (string|null);
                }

                /** Represents a DescribeNamespaceRequest. */
                class DescribeNamespaceRequest implements IDescribeNamespaceRequest {

                    /**
                     * Constructs a new DescribeNamespaceRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeNamespaceRequest);

                    /** DescribeNamespaceRequest namespace. */
                    public namespace: string;

                    /** DescribeNamespaceRequest id. */
                    public id: string;

                    /**
                     * Creates a new DescribeNamespaceRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeNamespaceRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeNamespaceRequest): temporal.api.workflowservice.v1.DescribeNamespaceRequest;

                    /**
                     * Encodes the specified DescribeNamespaceRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeNamespaceRequest.verify|verify} messages.
                     * @param message DescribeNamespaceRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeNamespaceRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeNamespaceRequest.verify|verify} messages.
                     * @param message DescribeNamespaceRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeNamespaceRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeNamespaceRequest
                     * @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): temporal.api.workflowservice.v1.DescribeNamespaceRequest;

                    /**
                     * Decodes a DescribeNamespaceRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeNamespaceRequest
                     * @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)): temporal.api.workflowservice.v1.DescribeNamespaceRequest;

                    /**
                     * Creates a DescribeNamespaceRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeNamespaceRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeNamespaceRequest;

                    /**
                     * Creates a plain object from a DescribeNamespaceRequest message. Also converts values to other types if specified.
                     * @param message DescribeNamespaceRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeNamespaceRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeNamespaceRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeNamespaceRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeNamespaceResponse. */
                interface IDescribeNamespaceResponse {

                    /** DescribeNamespaceResponse namespaceInfo */
                    namespaceInfo?: (temporal.api.namespace.v1.INamespaceInfo|null);

                    /** DescribeNamespaceResponse config */
                    config?: (temporal.api.namespace.v1.INamespaceConfig|null);

                    /** DescribeNamespaceResponse replicationConfig */
                    replicationConfig?: (temporal.api.replication.v1.INamespaceReplicationConfig|null);

                    /** DescribeNamespaceResponse failoverVersion */
                    failoverVersion?: (Long|null);

                    /** DescribeNamespaceResponse isGlobalNamespace */
                    isGlobalNamespace?: (boolean|null);

                    /**
                     * Contains the historical state of failover_versions for the cluster, truncated to contain only the last N
                     * states to ensure that the list does not grow unbounded.
                     */
                    failoverHistory?: (temporal.api.replication.v1.IFailoverStatus[]|null);
                }

                /** Represents a DescribeNamespaceResponse. */
                class DescribeNamespaceResponse implements IDescribeNamespaceResponse {

                    /**
                     * Constructs a new DescribeNamespaceResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeNamespaceResponse);

                    /** DescribeNamespaceResponse namespaceInfo. */
                    public namespaceInfo?: (temporal.api.namespace.v1.INamespaceInfo|null);

                    /** DescribeNamespaceResponse config. */
                    public config?: (temporal.api.namespace.v1.INamespaceConfig|null);

                    /** DescribeNamespaceResponse replicationConfig. */
                    public replicationConfig?: (temporal.api.replication.v1.INamespaceReplicationConfig|null);

                    /** DescribeNamespaceResponse failoverVersion. */
                    public failoverVersion: Long;

                    /** DescribeNamespaceResponse isGlobalNamespace. */
                    public isGlobalNamespace: boolean;

                    /**
                     * Contains the historical state of failover_versions for the cluster, truncated to contain only the last N
                     * states to ensure that the list does not grow unbounded.
                     */
                    public failoverHistory: temporal.api.replication.v1.IFailoverStatus[];

                    /**
                     * Creates a new DescribeNamespaceResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeNamespaceResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeNamespaceResponse): temporal.api.workflowservice.v1.DescribeNamespaceResponse;

                    /**
                     * Encodes the specified DescribeNamespaceResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeNamespaceResponse.verify|verify} messages.
                     * @param message DescribeNamespaceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeNamespaceResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeNamespaceResponse.verify|verify} messages.
                     * @param message DescribeNamespaceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeNamespaceResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeNamespaceResponse
                     * @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): temporal.api.workflowservice.v1.DescribeNamespaceResponse;

                    /**
                     * Decodes a DescribeNamespaceResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeNamespaceResponse
                     * @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)): temporal.api.workflowservice.v1.DescribeNamespaceResponse;

                    /**
                     * Creates a DescribeNamespaceResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeNamespaceResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeNamespaceResponse;

                    /**
                     * Creates a plain object from a DescribeNamespaceResponse message. Also converts values to other types if specified.
                     * @param message DescribeNamespaceResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeNamespaceResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeNamespaceResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeNamespaceResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateNamespaceRequest. */
                interface IUpdateNamespaceRequest {

                    /** UpdateNamespaceRequest namespace */
                    namespace?: (string|null);

                    /** UpdateNamespaceRequest updateInfo */
                    updateInfo?: (temporal.api.namespace.v1.IUpdateNamespaceInfo|null);

                    /** UpdateNamespaceRequest config */
                    config?: (temporal.api.namespace.v1.INamespaceConfig|null);

                    /** UpdateNamespaceRequest replicationConfig */
                    replicationConfig?: (temporal.api.replication.v1.INamespaceReplicationConfig|null);

                    /** UpdateNamespaceRequest securityToken */
                    securityToken?: (string|null);

                    /** UpdateNamespaceRequest deleteBadBinary */
                    deleteBadBinary?: (string|null);

                    /** promote local namespace to global namespace. Ignored if namespace is already global namespace. */
                    promoteNamespace?: (boolean|null);
                }

                /** Represents an UpdateNamespaceRequest. */
                class UpdateNamespaceRequest implements IUpdateNamespaceRequest {

                    /**
                     * Constructs a new UpdateNamespaceRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateNamespaceRequest);

                    /** UpdateNamespaceRequest namespace. */
                    public namespace: string;

                    /** UpdateNamespaceRequest updateInfo. */
                    public updateInfo?: (temporal.api.namespace.v1.IUpdateNamespaceInfo|null);

                    /** UpdateNamespaceRequest config. */
                    public config?: (temporal.api.namespace.v1.INamespaceConfig|null);

                    /** UpdateNamespaceRequest replicationConfig. */
                    public replicationConfig?: (temporal.api.replication.v1.INamespaceReplicationConfig|null);

                    /** UpdateNamespaceRequest securityToken. */
                    public securityToken: string;

                    /** UpdateNamespaceRequest deleteBadBinary. */
                    public deleteBadBinary: string;

                    /** promote local namespace to global namespace. Ignored if namespace is already global namespace. */
                    public promoteNamespace: boolean;

                    /**
                     * Creates a new UpdateNamespaceRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateNamespaceRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateNamespaceRequest): temporal.api.workflowservice.v1.UpdateNamespaceRequest;

                    /**
                     * Encodes the specified UpdateNamespaceRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateNamespaceRequest.verify|verify} messages.
                     * @param message UpdateNamespaceRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateNamespaceRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateNamespaceRequest.verify|verify} messages.
                     * @param message UpdateNamespaceRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateNamespaceRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateNamespaceRequest
                     * @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): temporal.api.workflowservice.v1.UpdateNamespaceRequest;

                    /**
                     * Decodes an UpdateNamespaceRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateNamespaceRequest
                     * @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)): temporal.api.workflowservice.v1.UpdateNamespaceRequest;

                    /**
                     * Creates an UpdateNamespaceRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateNamespaceRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateNamespaceRequest;

                    /**
                     * Creates a plain object from an UpdateNamespaceRequest message. Also converts values to other types if specified.
                     * @param message UpdateNamespaceRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateNamespaceRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateNamespaceRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateNamespaceRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateNamespaceResponse. */
                interface IUpdateNamespaceResponse {

                    /** UpdateNamespaceResponse namespaceInfo */
                    namespaceInfo?: (temporal.api.namespace.v1.INamespaceInfo|null);

                    /** UpdateNamespaceResponse config */
                    config?: (temporal.api.namespace.v1.INamespaceConfig|null);

                    /** UpdateNamespaceResponse replicationConfig */
                    replicationConfig?: (temporal.api.replication.v1.INamespaceReplicationConfig|null);

                    /** UpdateNamespaceResponse failoverVersion */
                    failoverVersion?: (Long|null);

                    /** UpdateNamespaceResponse isGlobalNamespace */
                    isGlobalNamespace?: (boolean|null);
                }

                /** Represents an UpdateNamespaceResponse. */
                class UpdateNamespaceResponse implements IUpdateNamespaceResponse {

                    /**
                     * Constructs a new UpdateNamespaceResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateNamespaceResponse);

                    /** UpdateNamespaceResponse namespaceInfo. */
                    public namespaceInfo?: (temporal.api.namespace.v1.INamespaceInfo|null);

                    /** UpdateNamespaceResponse config. */
                    public config?: (temporal.api.namespace.v1.INamespaceConfig|null);

                    /** UpdateNamespaceResponse replicationConfig. */
                    public replicationConfig?: (temporal.api.replication.v1.INamespaceReplicationConfig|null);

                    /** UpdateNamespaceResponse failoverVersion. */
                    public failoverVersion: Long;

                    /** UpdateNamespaceResponse isGlobalNamespace. */
                    public isGlobalNamespace: boolean;

                    /**
                     * Creates a new UpdateNamespaceResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateNamespaceResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateNamespaceResponse): temporal.api.workflowservice.v1.UpdateNamespaceResponse;

                    /**
                     * Encodes the specified UpdateNamespaceResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateNamespaceResponse.verify|verify} messages.
                     * @param message UpdateNamespaceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateNamespaceResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateNamespaceResponse.verify|verify} messages.
                     * @param message UpdateNamespaceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateNamespaceResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateNamespaceResponse
                     * @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): temporal.api.workflowservice.v1.UpdateNamespaceResponse;

                    /**
                     * Decodes an UpdateNamespaceResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateNamespaceResponse
                     * @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)): temporal.api.workflowservice.v1.UpdateNamespaceResponse;

                    /**
                     * Creates an UpdateNamespaceResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateNamespaceResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateNamespaceResponse;

                    /**
                     * Creates a plain object from an UpdateNamespaceResponse message. Also converts values to other types if specified.
                     * @param message UpdateNamespaceResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateNamespaceResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateNamespaceResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateNamespaceResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeprecateNamespaceRequest. */
                interface IDeprecateNamespaceRequest {

                    /** DeprecateNamespaceRequest namespace */
                    namespace?: (string|null);

                    /** DeprecateNamespaceRequest securityToken */
                    securityToken?: (string|null);
                }

                /** Deprecated. */
                class DeprecateNamespaceRequest implements IDeprecateNamespaceRequest {

                    /**
                     * Constructs a new DeprecateNamespaceRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeprecateNamespaceRequest);

                    /** DeprecateNamespaceRequest namespace. */
                    public namespace: string;

                    /** DeprecateNamespaceRequest securityToken. */
                    public securityToken: string;

                    /**
                     * Creates a new DeprecateNamespaceRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeprecateNamespaceRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeprecateNamespaceRequest): temporal.api.workflowservice.v1.DeprecateNamespaceRequest;

                    /**
                     * Encodes the specified DeprecateNamespaceRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DeprecateNamespaceRequest.verify|verify} messages.
                     * @param message DeprecateNamespaceRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeprecateNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeprecateNamespaceRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeprecateNamespaceRequest.verify|verify} messages.
                     * @param message DeprecateNamespaceRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeprecateNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeprecateNamespaceRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeprecateNamespaceRequest
                     * @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): temporal.api.workflowservice.v1.DeprecateNamespaceRequest;

                    /**
                     * Decodes a DeprecateNamespaceRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeprecateNamespaceRequest
                     * @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)): temporal.api.workflowservice.v1.DeprecateNamespaceRequest;

                    /**
                     * Creates a DeprecateNamespaceRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeprecateNamespaceRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeprecateNamespaceRequest;

                    /**
                     * Creates a plain object from a DeprecateNamespaceRequest message. Also converts values to other types if specified.
                     * @param message DeprecateNamespaceRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeprecateNamespaceRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeprecateNamespaceRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeprecateNamespaceRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeprecateNamespaceResponse. */
                interface IDeprecateNamespaceResponse {
                }

                /** Deprecated. */
                class DeprecateNamespaceResponse implements IDeprecateNamespaceResponse {

                    /**
                     * Constructs a new DeprecateNamespaceResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeprecateNamespaceResponse);

                    /**
                     * Creates a new DeprecateNamespaceResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeprecateNamespaceResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeprecateNamespaceResponse): temporal.api.workflowservice.v1.DeprecateNamespaceResponse;

                    /**
                     * Encodes the specified DeprecateNamespaceResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DeprecateNamespaceResponse.verify|verify} messages.
                     * @param message DeprecateNamespaceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeprecateNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeprecateNamespaceResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeprecateNamespaceResponse.verify|verify} messages.
                     * @param message DeprecateNamespaceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeprecateNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeprecateNamespaceResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeprecateNamespaceResponse
                     * @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): temporal.api.workflowservice.v1.DeprecateNamespaceResponse;

                    /**
                     * Decodes a DeprecateNamespaceResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeprecateNamespaceResponse
                     * @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)): temporal.api.workflowservice.v1.DeprecateNamespaceResponse;

                    /**
                     * Creates a DeprecateNamespaceResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeprecateNamespaceResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeprecateNamespaceResponse;

                    /**
                     * Creates a plain object from a DeprecateNamespaceResponse message. Also converts values to other types if specified.
                     * @param message DeprecateNamespaceResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeprecateNamespaceResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeprecateNamespaceResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeprecateNamespaceResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartWorkflowExecutionRequest. */
                interface IStartWorkflowExecutionRequest {

                    /** StartWorkflowExecutionRequest namespace */
                    namespace?: (string|null);

                    /** StartWorkflowExecutionRequest workflowId */
                    workflowId?: (string|null);

                    /** StartWorkflowExecutionRequest workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** StartWorkflowExecutionRequest taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** Serialized arguments to the workflow. These are passed as arguments to the workflow function. */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new. */
                    workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run. */
                    workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** The identity of the client who initiated this request */
                    identity?: (string|null);

                    /** A unique identifier for this start request. Typically UUIDv4. */
                    requestId?: (string|null);

                    /**
                     * Defines whether to allow re-using the workflow id from a previously *closed* workflow.
                     * The default policy is WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE.
                     *
                     * See `workflow_id_conflict_policy` for handling a workflow id duplication with a *running* workflow.
                     */
                    workflowIdReusePolicy?: (temporal.api.enums.v1.WorkflowIdReusePolicy|null);

                    /**
                     * Defines how to resolve a workflow id conflict with a *running* workflow.
                     * The default policy is WORKFLOW_ID_CONFLICT_POLICY_FAIL.
                     *
                     * See `workflow_id_reuse_policy` for handling a workflow id duplication with a *closed* workflow.
                     */
                    workflowIdConflictPolicy?: (temporal.api.enums.v1.WorkflowIdConflictPolicy|null);

                    /** The retry policy for the workflow. Will never exceed `workflow_execution_timeout`. */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** See https://docs.temporal.io/docs/content/what-is-a-temporal-cron-job/ */
                    cronSchedule?: (string|null);

                    /** StartWorkflowExecutionRequest memo */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** StartWorkflowExecutionRequest searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** StartWorkflowExecutionRequest header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Request to get the first workflow task inline in the response bypassing matching service and worker polling.
                     * If set to `true` the caller is expected to have a worker available and capable of processing the task.
                     * The returned task will be marked as started and is expected to be completed by the specified
                     * `workflow_task_timeout`.
                     */
                    requestEagerExecution?: (boolean|null);

                    /**
                     * These values will be available as ContinuedFailure and LastCompletionResult in the
                     * WorkflowExecutionStarted event and through SDKs. The are currently only used by the
                     * server itself (for the schedules feature) and are not intended to be exposed in
                     * StartWorkflowExecution.
                     */
                    continuedFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** StartWorkflowExecutionRequest lastCompletionResult */
                    lastCompletionResult?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Time to wait before dispatching the first workflow task. Cannot be used with `cron_schedule`.
                     * If the workflow gets a signal before the delay, a workflow task will be dispatched and the rest
                     * of the delay will be ignored.
                     */
                    workflowStartDelay?: (google.protobuf.IDuration|null);

                    /**
                     * Callbacks to be called by the server when this workflow reaches a terminal state.
                     * If the workflow continues-as-new, these callbacks will be carried over to the new execution.
                     * Callback addresses must be whitelisted in the server's dynamic configuration.
                     */
                    completionCallbacks?: (temporal.api.common.v1.ICallback[]|null);

                    /**
                     * Metadata on the workflow if it is started. This is carried over to the WorkflowExecutionInfo
                     * for use by user interfaces to display the fixed as-of-start summary and details of the
                     * workflow.
                     */
                    userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Links to be associated with the workflow. */
                    links?: (temporal.api.common.v1.ILink[]|null);

                    /**
                     * If set, takes precedence over the Versioning Behavior sent by the SDK on Workflow Task completion.
                     * To unset the override after the workflow is running, use UpdateWorkflowExecutionOptions.
                     */
                    versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /**
                     * Defines actions to be done to the existing running workflow when the conflict policy
                     * WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING is used. If not set (ie., nil value) or set to a
                     * empty object (ie., all options with default value), it won't do anything to the existing
                     * running workflow. If set, it will add a history event to the running workflow.
                     */
                    onConflictOptions?: (temporal.api.workflow.v1.IOnConflictOptions|null);

                    /** Priority metadata */
                    priority?: (temporal.api.common.v1.IPriority|null);

                    /** Deployment Options of the worker who will process the eager task. Passed when `request_eager_execution=true`. */
                    eagerWorkerDeploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);
                }

                /** Represents a StartWorkflowExecutionRequest. */
                class StartWorkflowExecutionRequest implements IStartWorkflowExecutionRequest {

                    /**
                     * Constructs a new StartWorkflowExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IStartWorkflowExecutionRequest);

                    /** StartWorkflowExecutionRequest namespace. */
                    public namespace: string;

                    /** StartWorkflowExecutionRequest workflowId. */
                    public workflowId: string;

                    /** StartWorkflowExecutionRequest workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** StartWorkflowExecutionRequest taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** Serialized arguments to the workflow. These are passed as arguments to the workflow function. */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new. */
                    public workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run. */
                    public workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    public workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** The identity of the client who initiated this request */
                    public identity: string;

                    /** A unique identifier for this start request. Typically UUIDv4. */
                    public requestId: string;

                    /**
                     * Defines whether to allow re-using the workflow id from a previously *closed* workflow.
                     * The default policy is WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE.
                     *
                     * See `workflow_id_conflict_policy` for handling a workflow id duplication with a *running* workflow.
                     */
                    public workflowIdReusePolicy: temporal.api.enums.v1.WorkflowIdReusePolicy;

                    /**
                     * Defines how to resolve a workflow id conflict with a *running* workflow.
                     * The default policy is WORKFLOW_ID_CONFLICT_POLICY_FAIL.
                     *
                     * See `workflow_id_reuse_policy` for handling a workflow id duplication with a *closed* workflow.
                     */
                    public workflowIdConflictPolicy: temporal.api.enums.v1.WorkflowIdConflictPolicy;

                    /** The retry policy for the workflow. Will never exceed `workflow_execution_timeout`. */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** See https://docs.temporal.io/docs/content/what-is-a-temporal-cron-job/ */
                    public cronSchedule: string;

                    /** StartWorkflowExecutionRequest memo. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** StartWorkflowExecutionRequest searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** StartWorkflowExecutionRequest header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Request to get the first workflow task inline in the response bypassing matching service and worker polling.
                     * If set to `true` the caller is expected to have a worker available and capable of processing the task.
                     * The returned task will be marked as started and is expected to be completed by the specified
                     * `workflow_task_timeout`.
                     */
                    public requestEagerExecution: boolean;

                    /**
                     * These values will be available as ContinuedFailure and LastCompletionResult in the
                     * WorkflowExecutionStarted event and through SDKs. The are currently only used by the
                     * server itself (for the schedules feature) and are not intended to be exposed in
                     * StartWorkflowExecution.
                     */
                    public continuedFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** StartWorkflowExecutionRequest lastCompletionResult. */
                    public lastCompletionResult?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Time to wait before dispatching the first workflow task. Cannot be used with `cron_schedule`.
                     * If the workflow gets a signal before the delay, a workflow task will be dispatched and the rest
                     * of the delay will be ignored.
                     */
                    public workflowStartDelay?: (google.protobuf.IDuration|null);

                    /**
                     * Callbacks to be called by the server when this workflow reaches a terminal state.
                     * If the workflow continues-as-new, these callbacks will be carried over to the new execution.
                     * Callback addresses must be whitelisted in the server's dynamic configuration.
                     */
                    public completionCallbacks: temporal.api.common.v1.ICallback[];

                    /**
                     * Metadata on the workflow if it is started. This is carried over to the WorkflowExecutionInfo
                     * for use by user interfaces to display the fixed as-of-start summary and details of the
                     * workflow.
                     */
                    public userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Links to be associated with the workflow. */
                    public links: temporal.api.common.v1.ILink[];

                    /**
                     * If set, takes precedence over the Versioning Behavior sent by the SDK on Workflow Task completion.
                     * To unset the override after the workflow is running, use UpdateWorkflowExecutionOptions.
                     */
                    public versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /**
                     * Defines actions to be done to the existing running workflow when the conflict policy
                     * WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING is used. If not set (ie., nil value) or set to a
                     * empty object (ie., all options with default value), it won't do anything to the existing
                     * running workflow. If set, it will add a history event to the running workflow.
                     */
                    public onConflictOptions?: (temporal.api.workflow.v1.IOnConflictOptions|null);

                    /** Priority metadata */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /** Deployment Options of the worker who will process the eager task. Passed when `request_eager_execution=true`. */
                    public eagerWorkerDeploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /**
                     * Creates a new StartWorkflowExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartWorkflowExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IStartWorkflowExecutionRequest): temporal.api.workflowservice.v1.StartWorkflowExecutionRequest;

                    /**
                     * Encodes the specified StartWorkflowExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.StartWorkflowExecutionRequest.verify|verify} messages.
                     * @param message StartWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IStartWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartWorkflowExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.StartWorkflowExecutionRequest.verify|verify} messages.
                     * @param message StartWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IStartWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartWorkflowExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartWorkflowExecutionRequest
                     * @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): temporal.api.workflowservice.v1.StartWorkflowExecutionRequest;

                    /**
                     * Decodes a StartWorkflowExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartWorkflowExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.StartWorkflowExecutionRequest;

                    /**
                     * Creates a StartWorkflowExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartWorkflowExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.StartWorkflowExecutionRequest;

                    /**
                     * Creates a plain object from a StartWorkflowExecutionRequest message. Also converts values to other types if specified.
                     * @param message StartWorkflowExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.StartWorkflowExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartWorkflowExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartWorkflowExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartWorkflowExecutionResponse. */
                interface IStartWorkflowExecutionResponse {

                    /** The run id of the workflow that was started - or used (via WorkflowIdConflictPolicy USE_EXISTING). */
                    runId?: (string|null);

                    /** If true, a new workflow was started. */
                    started?: (boolean|null);

                    /**
                     * Current execution status of the workflow. Typically remains WORKFLOW_EXECUTION_STATUS_RUNNING
                     * unless a de-dupe occurs or in specific scenarios handled within the ExecuteMultiOperation (refer to its docs).
                     */
                    status?: (temporal.api.enums.v1.WorkflowExecutionStatus|null);

                    /**
                     * When `request_eager_execution` is set on the `StartWorkflowExecutionRequest`, the server - if supported - will
                     * return the first workflow task to be eagerly executed.
                     * The caller is expected to have a worker available to process the task.
                     */
                    eagerWorkflowTask?: (temporal.api.workflowservice.v1.IPollWorkflowTaskQueueResponse|null);

                    /** Link to the workflow event. */
                    link?: (temporal.api.common.v1.ILink|null);
                }

                /** Represents a StartWorkflowExecutionResponse. */
                class StartWorkflowExecutionResponse implements IStartWorkflowExecutionResponse {

                    /**
                     * Constructs a new StartWorkflowExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IStartWorkflowExecutionResponse);

                    /** The run id of the workflow that was started - or used (via WorkflowIdConflictPolicy USE_EXISTING). */
                    public runId: string;

                    /** If true, a new workflow was started. */
                    public started: boolean;

                    /**
                     * Current execution status of the workflow. Typically remains WORKFLOW_EXECUTION_STATUS_RUNNING
                     * unless a de-dupe occurs or in specific scenarios handled within the ExecuteMultiOperation (refer to its docs).
                     */
                    public status: temporal.api.enums.v1.WorkflowExecutionStatus;

                    /**
                     * When `request_eager_execution` is set on the `StartWorkflowExecutionRequest`, the server - if supported - will
                     * return the first workflow task to be eagerly executed.
                     * The caller is expected to have a worker available to process the task.
                     */
                    public eagerWorkflowTask?: (temporal.api.workflowservice.v1.IPollWorkflowTaskQueueResponse|null);

                    /** Link to the workflow event. */
                    public link?: (temporal.api.common.v1.ILink|null);

                    /**
                     * Creates a new StartWorkflowExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartWorkflowExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IStartWorkflowExecutionResponse): temporal.api.workflowservice.v1.StartWorkflowExecutionResponse;

                    /**
                     * Encodes the specified StartWorkflowExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.StartWorkflowExecutionResponse.verify|verify} messages.
                     * @param message StartWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IStartWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartWorkflowExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.StartWorkflowExecutionResponse.verify|verify} messages.
                     * @param message StartWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IStartWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartWorkflowExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartWorkflowExecutionResponse
                     * @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): temporal.api.workflowservice.v1.StartWorkflowExecutionResponse;

                    /**
                     * Decodes a StartWorkflowExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartWorkflowExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.StartWorkflowExecutionResponse;

                    /**
                     * Creates a StartWorkflowExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartWorkflowExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.StartWorkflowExecutionResponse;

                    /**
                     * Creates a plain object from a StartWorkflowExecutionResponse message. Also converts values to other types if specified.
                     * @param message StartWorkflowExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.StartWorkflowExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartWorkflowExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartWorkflowExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetWorkflowExecutionHistoryRequest. */
                interface IGetWorkflowExecutionHistoryRequest {

                    /** GetWorkflowExecutionHistoryRequest namespace */
                    namespace?: (string|null);

                    /** GetWorkflowExecutionHistoryRequest execution */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** GetWorkflowExecutionHistoryRequest maximumPageSize */
                    maximumPageSize?: (number|null);

                    /**
                     * If a `GetWorkflowExecutionHistoryResponse` or a `PollWorkflowTaskQueueResponse` had one of
                     * these, it should be passed here to fetch the next page.
                     */
                    nextPageToken?: (Uint8Array|null);

                    /**
                     * If set to true, the RPC call will not resolve until there is a new event which matches
                     * the `history_event_filter_type`, or a timeout is hit.
                     */
                    waitNewEvent?: (boolean|null);

                    /**
                     * Filter returned events such that they match the specified filter type.
                     * Default: HISTORY_EVENT_FILTER_TYPE_ALL_EVENT.
                     */
                    historyEventFilterType?: (temporal.api.enums.v1.HistoryEventFilterType|null);

                    /** GetWorkflowExecutionHistoryRequest skipArchival */
                    skipArchival?: (boolean|null);
                }

                /** Represents a GetWorkflowExecutionHistoryRequest. */
                class GetWorkflowExecutionHistoryRequest implements IGetWorkflowExecutionHistoryRequest {

                    /**
                     * Constructs a new GetWorkflowExecutionHistoryRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryRequest);

                    /** GetWorkflowExecutionHistoryRequest namespace. */
                    public namespace: string;

                    /** GetWorkflowExecutionHistoryRequest execution. */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** GetWorkflowExecutionHistoryRequest maximumPageSize. */
                    public maximumPageSize: number;

                    /**
                     * If a `GetWorkflowExecutionHistoryResponse` or a `PollWorkflowTaskQueueResponse` had one of
                     * these, it should be passed here to fetch the next page.
                     */
                    public nextPageToken: Uint8Array;

                    /**
                     * If set to true, the RPC call will not resolve until there is a new event which matches
                     * the `history_event_filter_type`, or a timeout is hit.
                     */
                    public waitNewEvent: boolean;

                    /**
                     * Filter returned events such that they match the specified filter type.
                     * Default: HISTORY_EVENT_FILTER_TYPE_ALL_EVENT.
                     */
                    public historyEventFilterType: temporal.api.enums.v1.HistoryEventFilterType;

                    /** GetWorkflowExecutionHistoryRequest skipArchival. */
                    public skipArchival: boolean;

                    /**
                     * Creates a new GetWorkflowExecutionHistoryRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetWorkflowExecutionHistoryRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryRequest): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryRequest;

                    /**
                     * Encodes the specified GetWorkflowExecutionHistoryRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryRequest.verify|verify} messages.
                     * @param message GetWorkflowExecutionHistoryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetWorkflowExecutionHistoryRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryRequest.verify|verify} messages.
                     * @param message GetWorkflowExecutionHistoryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetWorkflowExecutionHistoryRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetWorkflowExecutionHistoryRequest
                     * @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): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryRequest;

                    /**
                     * Decodes a GetWorkflowExecutionHistoryRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetWorkflowExecutionHistoryRequest
                     * @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)): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryRequest;

                    /**
                     * Creates a GetWorkflowExecutionHistoryRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetWorkflowExecutionHistoryRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryRequest;

                    /**
                     * Creates a plain object from a GetWorkflowExecutionHistoryRequest message. Also converts values to other types if specified.
                     * @param message GetWorkflowExecutionHistoryRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetWorkflowExecutionHistoryRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetWorkflowExecutionHistoryRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetWorkflowExecutionHistoryResponse. */
                interface IGetWorkflowExecutionHistoryResponse {

                    /** GetWorkflowExecutionHistoryResponse history */
                    history?: (temporal.api.history.v1.IHistory|null);

                    /**
                     * Raw history is an alternate representation of history that may be returned if configured on
                     * the frontend. This is not supported by all SDKs. Either this or `history` will be set.
                     */
                    rawHistory?: (temporal.api.common.v1.IDataBlob[]|null);

                    /** Will be set if there are more history events than were included in this response */
                    nextPageToken?: (Uint8Array|null);

                    /** GetWorkflowExecutionHistoryResponse archived */
                    archived?: (boolean|null);
                }

                /** Represents a GetWorkflowExecutionHistoryResponse. */
                class GetWorkflowExecutionHistoryResponse implements IGetWorkflowExecutionHistoryResponse {

                    /**
                     * Constructs a new GetWorkflowExecutionHistoryResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryResponse);

                    /** GetWorkflowExecutionHistoryResponse history. */
                    public history?: (temporal.api.history.v1.IHistory|null);

                    /**
                     * Raw history is an alternate representation of history that may be returned if configured on
                     * the frontend. This is not supported by all SDKs. Either this or `history` will be set.
                     */
                    public rawHistory: temporal.api.common.v1.IDataBlob[];

                    /** Will be set if there are more history events than were included in this response */
                    public nextPageToken: Uint8Array;

                    /** GetWorkflowExecutionHistoryResponse archived. */
                    public archived: boolean;

                    /**
                     * Creates a new GetWorkflowExecutionHistoryResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetWorkflowExecutionHistoryResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryResponse): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse;

                    /**
                     * Encodes the specified GetWorkflowExecutionHistoryResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse.verify|verify} messages.
                     * @param message GetWorkflowExecutionHistoryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetWorkflowExecutionHistoryResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse.verify|verify} messages.
                     * @param message GetWorkflowExecutionHistoryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetWorkflowExecutionHistoryResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetWorkflowExecutionHistoryResponse
                     * @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): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse;

                    /**
                     * Decodes a GetWorkflowExecutionHistoryResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetWorkflowExecutionHistoryResponse
                     * @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)): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse;

                    /**
                     * Creates a GetWorkflowExecutionHistoryResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetWorkflowExecutionHistoryResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse;

                    /**
                     * Creates a plain object from a GetWorkflowExecutionHistoryResponse message. Also converts values to other types if specified.
                     * @param message GetWorkflowExecutionHistoryResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetWorkflowExecutionHistoryResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetWorkflowExecutionHistoryResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetWorkflowExecutionHistoryReverseRequest. */
                interface IGetWorkflowExecutionHistoryReverseRequest {

                    /** GetWorkflowExecutionHistoryReverseRequest namespace */
                    namespace?: (string|null);

                    /** GetWorkflowExecutionHistoryReverseRequest execution */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** GetWorkflowExecutionHistoryReverseRequest maximumPageSize */
                    maximumPageSize?: (number|null);

                    /** GetWorkflowExecutionHistoryReverseRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a GetWorkflowExecutionHistoryReverseRequest. */
                class GetWorkflowExecutionHistoryReverseRequest implements IGetWorkflowExecutionHistoryReverseRequest {

                    /**
                     * Constructs a new GetWorkflowExecutionHistoryReverseRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryReverseRequest);

                    /** GetWorkflowExecutionHistoryReverseRequest namespace. */
                    public namespace: string;

                    /** GetWorkflowExecutionHistoryReverseRequest execution. */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** GetWorkflowExecutionHistoryReverseRequest maximumPageSize. */
                    public maximumPageSize: number;

                    /** GetWorkflowExecutionHistoryReverseRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new GetWorkflowExecutionHistoryReverseRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetWorkflowExecutionHistoryReverseRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryReverseRequest): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseRequest;

                    /**
                     * Encodes the specified GetWorkflowExecutionHistoryReverseRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseRequest.verify|verify} messages.
                     * @param message GetWorkflowExecutionHistoryReverseRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryReverseRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetWorkflowExecutionHistoryReverseRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseRequest.verify|verify} messages.
                     * @param message GetWorkflowExecutionHistoryReverseRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryReverseRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetWorkflowExecutionHistoryReverseRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetWorkflowExecutionHistoryReverseRequest
                     * @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): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseRequest;

                    /**
                     * Decodes a GetWorkflowExecutionHistoryReverseRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetWorkflowExecutionHistoryReverseRequest
                     * @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)): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseRequest;

                    /**
                     * Creates a GetWorkflowExecutionHistoryReverseRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetWorkflowExecutionHistoryReverseRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseRequest;

                    /**
                     * Creates a plain object from a GetWorkflowExecutionHistoryReverseRequest message. Also converts values to other types if specified.
                     * @param message GetWorkflowExecutionHistoryReverseRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetWorkflowExecutionHistoryReverseRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetWorkflowExecutionHistoryReverseRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetWorkflowExecutionHistoryReverseResponse. */
                interface IGetWorkflowExecutionHistoryReverseResponse {

                    /** GetWorkflowExecutionHistoryReverseResponse history */
                    history?: (temporal.api.history.v1.IHistory|null);

                    /** Will be set if there are more history events than were included in this response */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a GetWorkflowExecutionHistoryReverseResponse. */
                class GetWorkflowExecutionHistoryReverseResponse implements IGetWorkflowExecutionHistoryReverseResponse {

                    /**
                     * Constructs a new GetWorkflowExecutionHistoryReverseResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryReverseResponse);

                    /** GetWorkflowExecutionHistoryReverseResponse history. */
                    public history?: (temporal.api.history.v1.IHistory|null);

                    /** Will be set if there are more history events than were included in this response */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new GetWorkflowExecutionHistoryReverseResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetWorkflowExecutionHistoryReverseResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryReverseResponse): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse;

                    /**
                     * Encodes the specified GetWorkflowExecutionHistoryReverseResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse.verify|verify} messages.
                     * @param message GetWorkflowExecutionHistoryReverseResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryReverseResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetWorkflowExecutionHistoryReverseResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse.verify|verify} messages.
                     * @param message GetWorkflowExecutionHistoryReverseResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryReverseResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetWorkflowExecutionHistoryReverseResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetWorkflowExecutionHistoryReverseResponse
                     * @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): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse;

                    /**
                     * Decodes a GetWorkflowExecutionHistoryReverseResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetWorkflowExecutionHistoryReverseResponse
                     * @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)): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse;

                    /**
                     * Creates a GetWorkflowExecutionHistoryReverseResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetWorkflowExecutionHistoryReverseResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse;

                    /**
                     * Creates a plain object from a GetWorkflowExecutionHistoryReverseResponse message. Also converts values to other types if specified.
                     * @param message GetWorkflowExecutionHistoryReverseResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetWorkflowExecutionHistoryReverseResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetWorkflowExecutionHistoryReverseResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollWorkflowTaskQueueRequest. */
                interface IPollWorkflowTaskQueueRequest {

                    /** PollWorkflowTaskQueueRequest namespace */
                    namespace?: (string|null);

                    /** PollWorkflowTaskQueueRequest taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** The identity of the worker/client who is polling this task queue */
                    identity?: (string|null);

                    /**
                     * A unique key for this worker instance, used for tracking worker lifecycle.
                     * This is guaranteed to be unique, whereas identity is not guaranteed to be unique.
                     */
                    workerInstanceKey?: (string|null);

                    /**
                     * Deprecated. Use deployment_options instead.
                     * Each worker process should provide an ID unique to the specific set of code it is running
                     * "checksum" in this field name isn't very accurate, it should be though of as an id.
                     */
                    binaryChecksum?: (string|null);

                    /**
                     * Deprecated. Use deployment_options instead.
                     * Information about this worker's build identifier and if it is choosing to use the versioning
                     * feature. See the `WorkerVersionCapabilities` docstring for more.
                     */
                    workerVersionCapabilities?: (temporal.api.common.v1.IWorkerVersionCapabilities|null);

                    /**
                     * Worker deployment options that user has set in the worker.
                     * Experimental. Worker Deployments are experimental and might significantly change in the future.
                     */
                    deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);
                }

                /** Represents a PollWorkflowTaskQueueRequest. */
                class PollWorkflowTaskQueueRequest implements IPollWorkflowTaskQueueRequest {

                    /**
                     * Constructs a new PollWorkflowTaskQueueRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPollWorkflowTaskQueueRequest);

                    /** PollWorkflowTaskQueueRequest namespace. */
                    public namespace: string;

                    /** PollWorkflowTaskQueueRequest taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** The identity of the worker/client who is polling this task queue */
                    public identity: string;

                    /**
                     * A unique key for this worker instance, used for tracking worker lifecycle.
                     * This is guaranteed to be unique, whereas identity is not guaranteed to be unique.
                     */
                    public workerInstanceKey: string;

                    /**
                     * Deprecated. Use deployment_options instead.
                     * Each worker process should provide an ID unique to the specific set of code it is running
                     * "checksum" in this field name isn't very accurate, it should be though of as an id.
                     */
                    public binaryChecksum: string;

                    /**
                     * Deprecated. Use deployment_options instead.
                     * Information about this worker's build identifier and if it is choosing to use the versioning
                     * feature. See the `WorkerVersionCapabilities` docstring for more.
                     */
                    public workerVersionCapabilities?: (temporal.api.common.v1.IWorkerVersionCapabilities|null);

                    /**
                     * Worker deployment options that user has set in the worker.
                     * Experimental. Worker Deployments are experimental and might significantly change in the future.
                     */
                    public deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /**
                     * Creates a new PollWorkflowTaskQueueRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollWorkflowTaskQueueRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPollWorkflowTaskQueueRequest): temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest;

                    /**
                     * Encodes the specified PollWorkflowTaskQueueRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest.verify|verify} messages.
                     * @param message PollWorkflowTaskQueueRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPollWorkflowTaskQueueRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollWorkflowTaskQueueRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest.verify|verify} messages.
                     * @param message PollWorkflowTaskQueueRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPollWorkflowTaskQueueRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollWorkflowTaskQueueRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollWorkflowTaskQueueRequest
                     * @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): temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest;

                    /**
                     * Decodes a PollWorkflowTaskQueueRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollWorkflowTaskQueueRequest
                     * @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)): temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest;

                    /**
                     * Creates a PollWorkflowTaskQueueRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollWorkflowTaskQueueRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest;

                    /**
                     * Creates a plain object from a PollWorkflowTaskQueueRequest message. Also converts values to other types if specified.
                     * @param message PollWorkflowTaskQueueRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollWorkflowTaskQueueRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollWorkflowTaskQueueRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollWorkflowTaskQueueResponse. */
                interface IPollWorkflowTaskQueueResponse {

                    /** A unique identifier for this task */
                    taskToken?: (Uint8Array|null);

                    /** PollWorkflowTaskQueueResponse workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** PollWorkflowTaskQueueResponse workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /**
                     * The last workflow task started event which was processed by some worker for this execution.
                     * Will be zero if no task has ever started.
                     */
                    previousStartedEventId?: (Long|null);

                    /**
                     * The id of the most recent workflow task started event, which will have been generated as a
                     * result of this poll request being served. Will be zero if the task
                     * does not contain any events which would advance history (no new WFT started).
                     * Currently this can happen for queries.
                     */
                    startedEventId?: (Long|null);

                    /** Starting at 1, the number of attempts to complete this task by any worker. */
                    attempt?: (number|null);

                    /**
                     * A hint that there are more tasks already present in this task queue
                     * partition. Can be used to prioritize draining a sticky queue.
                     *
                     * Specifically, the returned number is the number of tasks remaining in
                     * the in-memory buffer for this partition, which is currently capped at
                     * 1000. Because sticky queues only have one partition, this number is
                     * more useful when draining them. Normal queues, typically having more than one
                     * partition, will return a number representing only some portion of the
                     * overall backlog. Subsequent RPCs may not hit the same partition as
                     * this call.
                     */
                    backlogCountHint?: (Long|null);

                    /**
                     * The history for this workflow, which will either be complete or partial. Partial histories
                     * are sent to workers who have signaled that they are using a sticky queue when completing
                     * a workflow task.
                     */
                    history?: (temporal.api.history.v1.IHistory|null);

                    /**
                     * Will be set if there are more history events than were included in this response. Such events
                     * should be fetched via `GetWorkflowExecutionHistory`.
                     */
                    nextPageToken?: (Uint8Array|null);

                    /**
                     * Legacy queries appear in this field. The query must be responded to via
                     * `RespondQueryTaskCompleted`. If the workflow is already closed (queries are permitted on
                     * closed workflows) then the `history` field will be populated with the entire history. It
                     * may also be populated if this task originates on a non-sticky queue.
                     */
                    query?: (temporal.api.query.v1.IWorkflowQuery|null);

                    /**
                     * The task queue this task originated from, which will always be the original non-sticky name
                     * for the queue, even if this response came from polling a sticky queue.
                     */
                    workflowExecutionTaskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** When this task was scheduled by the server */
                    scheduledTime?: (google.protobuf.ITimestamp|null);

                    /** When the current workflow task started event was generated, meaning the current attempt. */
                    startedTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Queries that should be executed after applying the history in this task. Responses should be
                     * attached to `RespondWorkflowTaskCompletedRequest::query_results`
                     */
                    queries?: ({ [k: string]: temporal.api.query.v1.IWorkflowQuery }|null);

                    /** Protocol messages piggybacking on a WFT as a transport */
                    messages?: (temporal.api.protocol.v1.IMessage[]|null);

                    /** Server-advised information the SDK may use to adjust its poller count. */
                    pollerScalingDecision?: (temporal.api.taskqueue.v1.IPollerScalingDecision|null);
                }

                /** Represents a PollWorkflowTaskQueueResponse. */
                class PollWorkflowTaskQueueResponse implements IPollWorkflowTaskQueueResponse {

                    /**
                     * Constructs a new PollWorkflowTaskQueueResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPollWorkflowTaskQueueResponse);

                    /** A unique identifier for this task */
                    public taskToken: Uint8Array;

                    /** PollWorkflowTaskQueueResponse workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** PollWorkflowTaskQueueResponse workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /**
                     * The last workflow task started event which was processed by some worker for this execution.
                     * Will be zero if no task has ever started.
                     */
                    public previousStartedEventId: Long;

                    /**
                     * The id of the most recent workflow task started event, which will have been generated as a
                     * result of this poll request being served. Will be zero if the task
                     * does not contain any events which would advance history (no new WFT started).
                     * Currently this can happen for queries.
                     */
                    public startedEventId: Long;

                    /** Starting at 1, the number of attempts to complete this task by any worker. */
                    public attempt: number;

                    /**
                     * A hint that there are more tasks already present in this task queue
                     * partition. Can be used to prioritize draining a sticky queue.
                     *
                     * Specifically, the returned number is the number of tasks remaining in
                     * the in-memory buffer for this partition, which is currently capped at
                     * 1000. Because sticky queues only have one partition, this number is
                     * more useful when draining them. Normal queues, typically having more than one
                     * partition, will return a number representing only some portion of the
                     * overall backlog. Subsequent RPCs may not hit the same partition as
                     * this call.
                     */
                    public backlogCountHint: Long;

                    /**
                     * The history for this workflow, which will either be complete or partial. Partial histories
                     * are sent to workers who have signaled that they are using a sticky queue when completing
                     * a workflow task.
                     */
                    public history?: (temporal.api.history.v1.IHistory|null);

                    /**
                     * Will be set if there are more history events than were included in this response. Such events
                     * should be fetched via `GetWorkflowExecutionHistory`.
                     */
                    public nextPageToken: Uint8Array;

                    /**
                     * Legacy queries appear in this field. The query must be responded to via
                     * `RespondQueryTaskCompleted`. If the workflow is already closed (queries are permitted on
                     * closed workflows) then the `history` field will be populated with the entire history. It
                     * may also be populated if this task originates on a non-sticky queue.
                     */
                    public query?: (temporal.api.query.v1.IWorkflowQuery|null);

                    /**
                     * The task queue this task originated from, which will always be the original non-sticky name
                     * for the queue, even if this response came from polling a sticky queue.
                     */
                    public workflowExecutionTaskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** When this task was scheduled by the server */
                    public scheduledTime?: (google.protobuf.ITimestamp|null);

                    /** When the current workflow task started event was generated, meaning the current attempt. */
                    public startedTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Queries that should be executed after applying the history in this task. Responses should be
                     * attached to `RespondWorkflowTaskCompletedRequest::query_results`
                     */
                    public queries: { [k: string]: temporal.api.query.v1.IWorkflowQuery };

                    /** Protocol messages piggybacking on a WFT as a transport */
                    public messages: temporal.api.protocol.v1.IMessage[];

                    /** Server-advised information the SDK may use to adjust its poller count. */
                    public pollerScalingDecision?: (temporal.api.taskqueue.v1.IPollerScalingDecision|null);

                    /**
                     * Creates a new PollWorkflowTaskQueueResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollWorkflowTaskQueueResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPollWorkflowTaskQueueResponse): temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse;

                    /**
                     * Encodes the specified PollWorkflowTaskQueueResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse.verify|verify} messages.
                     * @param message PollWorkflowTaskQueueResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPollWorkflowTaskQueueResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollWorkflowTaskQueueResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse.verify|verify} messages.
                     * @param message PollWorkflowTaskQueueResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPollWorkflowTaskQueueResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollWorkflowTaskQueueResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollWorkflowTaskQueueResponse
                     * @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): temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse;

                    /**
                     * Decodes a PollWorkflowTaskQueueResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollWorkflowTaskQueueResponse
                     * @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)): temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse;

                    /**
                     * Creates a PollWorkflowTaskQueueResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollWorkflowTaskQueueResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse;

                    /**
                     * Creates a plain object from a PollWorkflowTaskQueueResponse message. Also converts values to other types if specified.
                     * @param message PollWorkflowTaskQueueResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollWorkflowTaskQueueResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollWorkflowTaskQueueResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondWorkflowTaskCompletedRequest. */
                interface IRespondWorkflowTaskCompletedRequest {

                    /** The task token as received in `PollWorkflowTaskQueueResponse` */
                    taskToken?: (Uint8Array|null);

                    /** A list of commands generated when driving the workflow code in response to the new task */
                    commands?: (temporal.api.command.v1.ICommand[]|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /**
                     * May be set by workers to indicate that the worker desires future tasks to be provided with
                     * incremental history on a sticky queue.
                     */
                    stickyAttributes?: (temporal.api.taskqueue.v1.IStickyExecutionAttributes|null);

                    /**
                     * If set, the worker wishes to immediately receive the next workflow task as a response to
                     * this completion. This can save on polling round-trips.
                     */
                    returnNewWorkflowTask?: (boolean|null);

                    /**
                     * Can be used to *force* creation of a new workflow task, even if no commands have resolved or
                     * one would not otherwise have been generated. This is used when the worker knows it is doing
                     * something useful, but cannot complete it within the workflow task timeout. Local activities
                     * which run for longer than the task timeout being the prime example.
                     */
                    forceCreateNewWorkflowTask?: (boolean|null);

                    /**
                     * Deprecated. Use `deployment_options` instead.
                     * Worker process' unique binary id
                     */
                    binaryChecksum?: (string|null);

                    /** Responses to the `queries` field in the task being responded to */
                    queryResults?: ({ [k: string]: temporal.api.query.v1.IWorkflowQueryResult }|null);

                    /** RespondWorkflowTaskCompletedRequest namespace */
                    namespace?: (string|null);

                    /**
                     * Version info of the worker who processed this task. This message's `build_id` field should
                     * always be set by SDKs. Workers opting into versioning will also set the `use_versioning`
                     * field to true. See message docstrings for more.
                     * Deprecated. Use `deployment_options` and `versioning_behavior` instead.
                     */
                    workerVersionStamp?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /** Protocol messages piggybacking on a WFT as a transport */
                    messages?: (temporal.api.protocol.v1.IMessage[]|null);

                    /**
                     * Data the SDK wishes to record for itself, but server need not interpret, and does not
                     * directly impact workflow state.
                     */
                    sdkMetadata?: (temporal.api.sdk.v1.IWorkflowTaskCompletedMetadata|null);

                    /** Local usage data collected for metering */
                    meteringMetadata?: (temporal.api.common.v1.IMeteringMetadata|null);

                    /** All capabilities the SDK supports. */
                    capabilities?: (temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.ICapabilities|null);

                    /**
                     * Deployment info of the worker that completed this task. Must be present if user has set
                     * `WorkerDeploymentOptions` regardless of versioning being enabled or not.
                     * Deprecated. Replaced with `deployment_options`.
                     */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /**
                     * Versioning behavior of this workflow execution as set on the worker that completed this task.
                     * UNSPECIFIED means versioning is not enabled in the worker.
                     */
                    versioningBehavior?: (temporal.api.enums.v1.VersioningBehavior|null);

                    /** Worker deployment options that user has set in the worker. */
                    deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);
                }

                /** Represents a RespondWorkflowTaskCompletedRequest. */
                class RespondWorkflowTaskCompletedRequest implements IRespondWorkflowTaskCompletedRequest {

                    /**
                     * Constructs a new RespondWorkflowTaskCompletedRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondWorkflowTaskCompletedRequest);

                    /** The task token as received in `PollWorkflowTaskQueueResponse` */
                    public taskToken: Uint8Array;

                    /** A list of commands generated when driving the workflow code in response to the new task */
                    public commands: temporal.api.command.v1.ICommand[];

                    /** The identity of the worker/client */
                    public identity: string;

                    /**
                     * May be set by workers to indicate that the worker desires future tasks to be provided with
                     * incremental history on a sticky queue.
                     */
                    public stickyAttributes?: (temporal.api.taskqueue.v1.IStickyExecutionAttributes|null);

                    /**
                     * If set, the worker wishes to immediately receive the next workflow task as a response to
                     * this completion. This can save on polling round-trips.
                     */
                    public returnNewWorkflowTask: boolean;

                    /**
                     * Can be used to *force* creation of a new workflow task, even if no commands have resolved or
                     * one would not otherwise have been generated. This is used when the worker knows it is doing
                     * something useful, but cannot complete it within the workflow task timeout. Local activities
                     * which run for longer than the task timeout being the prime example.
                     */
                    public forceCreateNewWorkflowTask: boolean;

                    /**
                     * Deprecated. Use `deployment_options` instead.
                     * Worker process' unique binary id
                     */
                    public binaryChecksum: string;

                    /** Responses to the `queries` field in the task being responded to */
                    public queryResults: { [k: string]: temporal.api.query.v1.IWorkflowQueryResult };

                    /** RespondWorkflowTaskCompletedRequest namespace. */
                    public namespace: string;

                    /**
                     * Version info of the worker who processed this task. This message's `build_id` field should
                     * always be set by SDKs. Workers opting into versioning will also set the `use_versioning`
                     * field to true. See message docstrings for more.
                     * Deprecated. Use `deployment_options` and `versioning_behavior` instead.
                     */
                    public workerVersionStamp?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /** Protocol messages piggybacking on a WFT as a transport */
                    public messages: temporal.api.protocol.v1.IMessage[];

                    /**
                     * Data the SDK wishes to record for itself, but server need not interpret, and does not
                     * directly impact workflow state.
                     */
                    public sdkMetadata?: (temporal.api.sdk.v1.IWorkflowTaskCompletedMetadata|null);

                    /** Local usage data collected for metering */
                    public meteringMetadata?: (temporal.api.common.v1.IMeteringMetadata|null);

                    /** All capabilities the SDK supports. */
                    public capabilities?: (temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.ICapabilities|null);

                    /**
                     * Deployment info of the worker that completed this task. Must be present if user has set
                     * `WorkerDeploymentOptions` regardless of versioning being enabled or not.
                     * Deprecated. Replaced with `deployment_options`.
                     */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /**
                     * Versioning behavior of this workflow execution as set on the worker that completed this task.
                     * UNSPECIFIED means versioning is not enabled in the worker.
                     */
                    public versioningBehavior: temporal.api.enums.v1.VersioningBehavior;

                    /** Worker deployment options that user has set in the worker. */
                    public deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /**
                     * Creates a new RespondWorkflowTaskCompletedRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondWorkflowTaskCompletedRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondWorkflowTaskCompletedRequest): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest;

                    /**
                     * Encodes the specified RespondWorkflowTaskCompletedRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.verify|verify} messages.
                     * @param message RespondWorkflowTaskCompletedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondWorkflowTaskCompletedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondWorkflowTaskCompletedRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.verify|verify} messages.
                     * @param message RespondWorkflowTaskCompletedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondWorkflowTaskCompletedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondWorkflowTaskCompletedRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondWorkflowTaskCompletedRequest
                     * @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): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest;

                    /**
                     * Decodes a RespondWorkflowTaskCompletedRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondWorkflowTaskCompletedRequest
                     * @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)): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest;

                    /**
                     * Creates a RespondWorkflowTaskCompletedRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondWorkflowTaskCompletedRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest;

                    /**
                     * Creates a plain object from a RespondWorkflowTaskCompletedRequest message. Also converts values to other types if specified.
                     * @param message RespondWorkflowTaskCompletedRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondWorkflowTaskCompletedRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondWorkflowTaskCompletedRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace RespondWorkflowTaskCompletedRequest {

                    /** Properties of a Capabilities. */
                    interface ICapabilities {

                        /**
                         * True if the SDK can handle speculative workflow task with command events. If true, the
                         * server may choose, at its discretion, to discard a speculative workflow task even if that
                         * speculative task included command events the SDK had not previously processed.
                         *
                         * (-- api-linter: core::0140::prepositions=disabled
                         * aip.dev/not-precedent: "with" used to describe the workflow task. --)
                         */
                        discardSpeculativeWorkflowTaskWithEvents?: (boolean|null);
                    }

                    /** SDK capability details. */
                    class Capabilities implements ICapabilities {

                        /**
                         * Constructs a new Capabilities.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.ICapabilities);

                        /**
                         * True if the SDK can handle speculative workflow task with command events. If true, the
                         * server may choose, at its discretion, to discard a speculative workflow task even if that
                         * speculative task included command events the SDK had not previously processed.
                         *
                         * (-- api-linter: core::0140::prepositions=disabled
                         * aip.dev/not-precedent: "with" used to describe the workflow task. --)
                         */
                        public discardSpeculativeWorkflowTaskWithEvents: boolean;

                        /**
                         * Creates a new Capabilities instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Capabilities instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.ICapabilities): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.Capabilities;

                        /**
                         * Encodes the specified Capabilities message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.Capabilities.verify|verify} messages.
                         * @param message Capabilities message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.ICapabilities, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Capabilities message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.Capabilities.verify|verify} messages.
                         * @param message Capabilities message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.ICapabilities, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Capabilities message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Capabilities
                         * @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): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.Capabilities;

                        /**
                         * Decodes a Capabilities message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Capabilities
                         * @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)): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.Capabilities;

                        /**
                         * Creates a Capabilities message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Capabilities
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.Capabilities;

                        /**
                         * Creates a plain object from a Capabilities message. Also converts values to other types if specified.
                         * @param message Capabilities
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.Capabilities, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Capabilities to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Capabilities
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a RespondWorkflowTaskCompletedResponse. */
                interface IRespondWorkflowTaskCompletedResponse {

                    /** See `RespondWorkflowTaskCompletedResponse::return_new_workflow_task` */
                    workflowTask?: (temporal.api.workflowservice.v1.IPollWorkflowTaskQueueResponse|null);

                    /** See `ScheduleActivityTaskCommandAttributes::request_eager_execution` */
                    activityTasks?: (temporal.api.workflowservice.v1.IPollActivityTaskQueueResponse[]|null);

                    /**
                     * If non zero, indicates the server has discarded the workflow task that was being responded to.
                     * Will be the event ID of the last workflow task started event in the history before the new workflow task.
                     * Server is only expected to discard a workflow task if it could not have modified the workflow state.
                     */
                    resetHistoryEventId?: (Long|null);
                }

                /** Represents a RespondWorkflowTaskCompletedResponse. */
                class RespondWorkflowTaskCompletedResponse implements IRespondWorkflowTaskCompletedResponse {

                    /**
                     * Constructs a new RespondWorkflowTaskCompletedResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondWorkflowTaskCompletedResponse);

                    /** See `RespondWorkflowTaskCompletedResponse::return_new_workflow_task` */
                    public workflowTask?: (temporal.api.workflowservice.v1.IPollWorkflowTaskQueueResponse|null);

                    /** See `ScheduleActivityTaskCommandAttributes::request_eager_execution` */
                    public activityTasks: temporal.api.workflowservice.v1.IPollActivityTaskQueueResponse[];

                    /**
                     * If non zero, indicates the server has discarded the workflow task that was being responded to.
                     * Will be the event ID of the last workflow task started event in the history before the new workflow task.
                     * Server is only expected to discard a workflow task if it could not have modified the workflow state.
                     */
                    public resetHistoryEventId: Long;

                    /**
                     * Creates a new RespondWorkflowTaskCompletedResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondWorkflowTaskCompletedResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondWorkflowTaskCompletedResponse): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedResponse;

                    /**
                     * Encodes the specified RespondWorkflowTaskCompletedResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedResponse.verify|verify} messages.
                     * @param message RespondWorkflowTaskCompletedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondWorkflowTaskCompletedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondWorkflowTaskCompletedResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedResponse.verify|verify} messages.
                     * @param message RespondWorkflowTaskCompletedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondWorkflowTaskCompletedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondWorkflowTaskCompletedResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondWorkflowTaskCompletedResponse
                     * @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): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedResponse;

                    /**
                     * Decodes a RespondWorkflowTaskCompletedResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondWorkflowTaskCompletedResponse
                     * @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)): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedResponse;

                    /**
                     * Creates a RespondWorkflowTaskCompletedResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondWorkflowTaskCompletedResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedResponse;

                    /**
                     * Creates a plain object from a RespondWorkflowTaskCompletedResponse message. Also converts values to other types if specified.
                     * @param message RespondWorkflowTaskCompletedResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondWorkflowTaskCompletedResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondWorkflowTaskCompletedResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondWorkflowTaskFailedRequest. */
                interface IRespondWorkflowTaskFailedRequest {

                    /** The task token as received in `PollWorkflowTaskQueueResponse` */
                    taskToken?: (Uint8Array|null);

                    /**
                     * Why did the task fail? It's important to note that many of the variants in this enum cannot
                     * apply to worker responses. See the type's doc for more.
                     */
                    cause?: (temporal.api.enums.v1.WorkflowTaskFailedCause|null);

                    /** Failure details */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /**
                     * Deprecated. Use `deployment_options` instead.
                     * Worker process' unique binary id
                     */
                    binaryChecksum?: (string|null);

                    /** RespondWorkflowTaskFailedRequest namespace */
                    namespace?: (string|null);

                    /** Protocol messages piggybacking on a WFT as a transport */
                    messages?: (temporal.api.protocol.v1.IMessage[]|null);

                    /**
                     * Version info of the worker who processed this task. This message's `build_id` field should
                     * always be set by SDKs. Workers opting into versioning will also set the `use_versioning`
                     * field to true. See message docstrings for more.
                     * Deprecated. Use `deployment_options` instead.
                     */
                    workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Deployment info of the worker that completed this task. Must be present if user has set
                     * `WorkerDeploymentOptions` regardless of versioning being enabled or not.
                     * Deprecated. Replaced with `deployment_options`.
                     */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Worker deployment options that user has set in the worker. */
                    deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);
                }

                /** Represents a RespondWorkflowTaskFailedRequest. */
                class RespondWorkflowTaskFailedRequest implements IRespondWorkflowTaskFailedRequest {

                    /**
                     * Constructs a new RespondWorkflowTaskFailedRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondWorkflowTaskFailedRequest);

                    /** The task token as received in `PollWorkflowTaskQueueResponse` */
                    public taskToken: Uint8Array;

                    /**
                     * Why did the task fail? It's important to note that many of the variants in this enum cannot
                     * apply to worker responses. See the type's doc for more.
                     */
                    public cause: temporal.api.enums.v1.WorkflowTaskFailedCause;

                    /** Failure details */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /**
                     * Deprecated. Use `deployment_options` instead.
                     * Worker process' unique binary id
                     */
                    public binaryChecksum: string;

                    /** RespondWorkflowTaskFailedRequest namespace. */
                    public namespace: string;

                    /** Protocol messages piggybacking on a WFT as a transport */
                    public messages: temporal.api.protocol.v1.IMessage[];

                    /**
                     * Version info of the worker who processed this task. This message's `build_id` field should
                     * always be set by SDKs. Workers opting into versioning will also set the `use_versioning`
                     * field to true. See message docstrings for more.
                     * Deprecated. Use `deployment_options` instead.
                     */
                    public workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Deployment info of the worker that completed this task. Must be present if user has set
                     * `WorkerDeploymentOptions` regardless of versioning being enabled or not.
                     * Deprecated. Replaced with `deployment_options`.
                     */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Worker deployment options that user has set in the worker. */
                    public deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /**
                     * Creates a new RespondWorkflowTaskFailedRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondWorkflowTaskFailedRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondWorkflowTaskFailedRequest): temporal.api.workflowservice.v1.RespondWorkflowTaskFailedRequest;

                    /**
                     * Encodes the specified RespondWorkflowTaskFailedRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondWorkflowTaskFailedRequest.verify|verify} messages.
                     * @param message RespondWorkflowTaskFailedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondWorkflowTaskFailedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondWorkflowTaskFailedRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondWorkflowTaskFailedRequest.verify|verify} messages.
                     * @param message RespondWorkflowTaskFailedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondWorkflowTaskFailedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondWorkflowTaskFailedRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondWorkflowTaskFailedRequest
                     * @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): temporal.api.workflowservice.v1.RespondWorkflowTaskFailedRequest;

                    /**
                     * Decodes a RespondWorkflowTaskFailedRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondWorkflowTaskFailedRequest
                     * @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)): temporal.api.workflowservice.v1.RespondWorkflowTaskFailedRequest;

                    /**
                     * Creates a RespondWorkflowTaskFailedRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondWorkflowTaskFailedRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondWorkflowTaskFailedRequest;

                    /**
                     * Creates a plain object from a RespondWorkflowTaskFailedRequest message. Also converts values to other types if specified.
                     * @param message RespondWorkflowTaskFailedRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondWorkflowTaskFailedRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondWorkflowTaskFailedRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondWorkflowTaskFailedRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondWorkflowTaskFailedResponse. */
                interface IRespondWorkflowTaskFailedResponse {
                }

                /** Represents a RespondWorkflowTaskFailedResponse. */
                class RespondWorkflowTaskFailedResponse implements IRespondWorkflowTaskFailedResponse {

                    /**
                     * Constructs a new RespondWorkflowTaskFailedResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondWorkflowTaskFailedResponse);

                    /**
                     * Creates a new RespondWorkflowTaskFailedResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondWorkflowTaskFailedResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondWorkflowTaskFailedResponse): temporal.api.workflowservice.v1.RespondWorkflowTaskFailedResponse;

                    /**
                     * Encodes the specified RespondWorkflowTaskFailedResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondWorkflowTaskFailedResponse.verify|verify} messages.
                     * @param message RespondWorkflowTaskFailedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondWorkflowTaskFailedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondWorkflowTaskFailedResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondWorkflowTaskFailedResponse.verify|verify} messages.
                     * @param message RespondWorkflowTaskFailedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondWorkflowTaskFailedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondWorkflowTaskFailedResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondWorkflowTaskFailedResponse
                     * @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): temporal.api.workflowservice.v1.RespondWorkflowTaskFailedResponse;

                    /**
                     * Decodes a RespondWorkflowTaskFailedResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondWorkflowTaskFailedResponse
                     * @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)): temporal.api.workflowservice.v1.RespondWorkflowTaskFailedResponse;

                    /**
                     * Creates a RespondWorkflowTaskFailedResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondWorkflowTaskFailedResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondWorkflowTaskFailedResponse;

                    /**
                     * Creates a plain object from a RespondWorkflowTaskFailedResponse message. Also converts values to other types if specified.
                     * @param message RespondWorkflowTaskFailedResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondWorkflowTaskFailedResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondWorkflowTaskFailedResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondWorkflowTaskFailedResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollActivityTaskQueueRequest. */
                interface IPollActivityTaskQueueRequest {

                    /** PollActivityTaskQueueRequest namespace */
                    namespace?: (string|null);

                    /** PollActivityTaskQueueRequest taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /**
                     * A unique key for this worker instance, used for tracking worker lifecycle.
                     * This is guaranteed to be unique, whereas identity is not guaranteed to be unique.
                     */
                    workerInstanceKey?: (string|null);

                    /** PollActivityTaskQueueRequest taskQueueMetadata */
                    taskQueueMetadata?: (temporal.api.taskqueue.v1.ITaskQueueMetadata|null);

                    /**
                     * Information about this worker's build identifier and if it is choosing to use the versioning
                     * feature. See the `WorkerVersionCapabilities` docstring for more.
                     * Deprecated. Replaced by deployment_options.
                     */
                    workerVersionCapabilities?: (temporal.api.common.v1.IWorkerVersionCapabilities|null);

                    /** Worker deployment options that user has set in the worker. */
                    deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);
                }

                /** Represents a PollActivityTaskQueueRequest. */
                class PollActivityTaskQueueRequest implements IPollActivityTaskQueueRequest {

                    /**
                     * Constructs a new PollActivityTaskQueueRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPollActivityTaskQueueRequest);

                    /** PollActivityTaskQueueRequest namespace. */
                    public namespace: string;

                    /** PollActivityTaskQueueRequest taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /**
                     * A unique key for this worker instance, used for tracking worker lifecycle.
                     * This is guaranteed to be unique, whereas identity is not guaranteed to be unique.
                     */
                    public workerInstanceKey: string;

                    /** PollActivityTaskQueueRequest taskQueueMetadata. */
                    public taskQueueMetadata?: (temporal.api.taskqueue.v1.ITaskQueueMetadata|null);

                    /**
                     * Information about this worker's build identifier and if it is choosing to use the versioning
                     * feature. See the `WorkerVersionCapabilities` docstring for more.
                     * Deprecated. Replaced by deployment_options.
                     */
                    public workerVersionCapabilities?: (temporal.api.common.v1.IWorkerVersionCapabilities|null);

                    /** Worker deployment options that user has set in the worker. */
                    public deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /**
                     * Creates a new PollActivityTaskQueueRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollActivityTaskQueueRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPollActivityTaskQueueRequest): temporal.api.workflowservice.v1.PollActivityTaskQueueRequest;

                    /**
                     * Encodes the specified PollActivityTaskQueueRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.PollActivityTaskQueueRequest.verify|verify} messages.
                     * @param message PollActivityTaskQueueRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPollActivityTaskQueueRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollActivityTaskQueueRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PollActivityTaskQueueRequest.verify|verify} messages.
                     * @param message PollActivityTaskQueueRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPollActivityTaskQueueRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollActivityTaskQueueRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollActivityTaskQueueRequest
                     * @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): temporal.api.workflowservice.v1.PollActivityTaskQueueRequest;

                    /**
                     * Decodes a PollActivityTaskQueueRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollActivityTaskQueueRequest
                     * @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)): temporal.api.workflowservice.v1.PollActivityTaskQueueRequest;

                    /**
                     * Creates a PollActivityTaskQueueRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollActivityTaskQueueRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PollActivityTaskQueueRequest;

                    /**
                     * Creates a plain object from a PollActivityTaskQueueRequest message. Also converts values to other types if specified.
                     * @param message PollActivityTaskQueueRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PollActivityTaskQueueRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollActivityTaskQueueRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollActivityTaskQueueRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollActivityTaskQueueResponse. */
                interface IPollActivityTaskQueueResponse {

                    /** A unique identifier for this task */
                    taskToken?: (Uint8Array|null);

                    /**
                     * The namespace of the activity. If this is a workflow activity then this is the namespace of
                     * the workflow also. If this is a standalone activity then the name of this field is
                     * misleading, but retained for compatibility with workflow activities.
                     */
                    workflowNamespace?: (string|null);

                    /** Type of the requesting workflow (if this is a workflow activity). */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Execution info of the requesting workflow (if this is a workflow activity) */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** PollActivityTaskQueueResponse activityType */
                    activityType?: (temporal.api.common.v1.IActivityType|null);

                    /**
                     * The autogenerated or user specified identifier of this activity. Can be used to complete the
                     * activity via `RespondActivityTaskCompletedById`. May be re-used as long as the last usage
                     * has resolved, but unique IDs for every activity invocation is a good idea.
                     * Note that only a workflow activity ID may be autogenerated.
                     */
                    activityId?: (string|null);

                    /**
                     * Headers specified by the scheduling workflow. Commonly used to propagate contextual info
                     * from the workflow to its activities. For example, tracing contexts.
                     */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** Arguments to the activity invocation */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Details of the last heartbeat that was recorded for this activity as of the time this task
                     * was delivered.
                     */
                    heartbeatDetails?: (temporal.api.common.v1.IPayloads|null);

                    /** When was this task first scheduled */
                    scheduledTime?: (google.protobuf.ITimestamp|null);

                    /** When was this task attempt scheduled */
                    currentAttemptScheduledTime?: (google.protobuf.ITimestamp|null);

                    /** When was this task started (this attempt) */
                    startedTime?: (google.protobuf.ITimestamp|null);

                    /** Starting at 1, the number of attempts to perform this activity */
                    attempt?: (number|null);

                    /**
                     * First scheduled -> final result reported timeout
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Current attempt start -> final result reported timeout
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Window within which the activity must report a heartbeat, or be timed out. */
                    heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * This is the retry policy the service uses which may be different from the one provided
                     * (or not) during activity scheduling. The service can override the provided one if some
                     * values are not specified or exceed configured system limits.
                     */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Server-advised information the SDK may use to adjust its poller count. */
                    pollerScalingDecision?: (temporal.api.taskqueue.v1.IPollerScalingDecision|null);

                    /** Priority metadata */
                    priority?: (temporal.api.common.v1.IPriority|null);

                    /** The run ID of the activity execution, only set for standalone activities. */
                    activityRunId?: (string|null);
                }

                /** Represents a PollActivityTaskQueueResponse. */
                class PollActivityTaskQueueResponse implements IPollActivityTaskQueueResponse {

                    /**
                     * Constructs a new PollActivityTaskQueueResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPollActivityTaskQueueResponse);

                    /** A unique identifier for this task */
                    public taskToken: Uint8Array;

                    /**
                     * The namespace of the activity. If this is a workflow activity then this is the namespace of
                     * the workflow also. If this is a standalone activity then the name of this field is
                     * misleading, but retained for compatibility with workflow activities.
                     */
                    public workflowNamespace: string;

                    /** Type of the requesting workflow (if this is a workflow activity). */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Execution info of the requesting workflow (if this is a workflow activity) */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** PollActivityTaskQueueResponse activityType. */
                    public activityType?: (temporal.api.common.v1.IActivityType|null);

                    /**
                     * The autogenerated or user specified identifier of this activity. Can be used to complete the
                     * activity via `RespondActivityTaskCompletedById`. May be re-used as long as the last usage
                     * has resolved, but unique IDs for every activity invocation is a good idea.
                     * Note that only a workflow activity ID may be autogenerated.
                     */
                    public activityId: string;

                    /**
                     * Headers specified by the scheduling workflow. Commonly used to propagate contextual info
                     * from the workflow to its activities. For example, tracing contexts.
                     */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** Arguments to the activity invocation */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Details of the last heartbeat that was recorded for this activity as of the time this task
                     * was delivered.
                     */
                    public heartbeatDetails?: (temporal.api.common.v1.IPayloads|null);

                    /** When was this task first scheduled */
                    public scheduledTime?: (google.protobuf.ITimestamp|null);

                    /** When was this task attempt scheduled */
                    public currentAttemptScheduledTime?: (google.protobuf.ITimestamp|null);

                    /** When was this task started (this attempt) */
                    public startedTime?: (google.protobuf.ITimestamp|null);

                    /** Starting at 1, the number of attempts to perform this activity */
                    public attempt: number;

                    /**
                     * First scheduled -> final result reported timeout
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Current attempt start -> final result reported timeout
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Window within which the activity must report a heartbeat, or be timed out. */
                    public heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * This is the retry policy the service uses which may be different from the one provided
                     * (or not) during activity scheduling. The service can override the provided one if some
                     * values are not specified or exceed configured system limits.
                     */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Server-advised information the SDK may use to adjust its poller count. */
                    public pollerScalingDecision?: (temporal.api.taskqueue.v1.IPollerScalingDecision|null);

                    /** Priority metadata */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /** The run ID of the activity execution, only set for standalone activities. */
                    public activityRunId: string;

                    /**
                     * Creates a new PollActivityTaskQueueResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollActivityTaskQueueResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPollActivityTaskQueueResponse): temporal.api.workflowservice.v1.PollActivityTaskQueueResponse;

                    /**
                     * Encodes the specified PollActivityTaskQueueResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.PollActivityTaskQueueResponse.verify|verify} messages.
                     * @param message PollActivityTaskQueueResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPollActivityTaskQueueResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollActivityTaskQueueResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PollActivityTaskQueueResponse.verify|verify} messages.
                     * @param message PollActivityTaskQueueResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPollActivityTaskQueueResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollActivityTaskQueueResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollActivityTaskQueueResponse
                     * @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): temporal.api.workflowservice.v1.PollActivityTaskQueueResponse;

                    /**
                     * Decodes a PollActivityTaskQueueResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollActivityTaskQueueResponse
                     * @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)): temporal.api.workflowservice.v1.PollActivityTaskQueueResponse;

                    /**
                     * Creates a PollActivityTaskQueueResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollActivityTaskQueueResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PollActivityTaskQueueResponse;

                    /**
                     * Creates a plain object from a PollActivityTaskQueueResponse message. Also converts values to other types if specified.
                     * @param message PollActivityTaskQueueResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PollActivityTaskQueueResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollActivityTaskQueueResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollActivityTaskQueueResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RecordActivityTaskHeartbeatRequest. */
                interface IRecordActivityTaskHeartbeatRequest {

                    /** The task token as received in `PollActivityTaskQueueResponse` */
                    taskToken?: (Uint8Array|null);

                    /** Arbitrary data, of which the most recent call is kept, to store for this activity */
                    details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /** RecordActivityTaskHeartbeatRequest namespace */
                    namespace?: (string|null);
                }

                /** Represents a RecordActivityTaskHeartbeatRequest. */
                class RecordActivityTaskHeartbeatRequest implements IRecordActivityTaskHeartbeatRequest {

                    /**
                     * Constructs a new RecordActivityTaskHeartbeatRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatRequest);

                    /** The task token as received in `PollActivityTaskQueueResponse` */
                    public taskToken: Uint8Array;

                    /** Arbitrary data, of which the most recent call is kept, to store for this activity */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /** RecordActivityTaskHeartbeatRequest namespace. */
                    public namespace: string;

                    /**
                     * Creates a new RecordActivityTaskHeartbeatRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RecordActivityTaskHeartbeatRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatRequest): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatRequest;

                    /**
                     * Encodes the specified RecordActivityTaskHeartbeatRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatRequest.verify|verify} messages.
                     * @param message RecordActivityTaskHeartbeatRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RecordActivityTaskHeartbeatRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatRequest.verify|verify} messages.
                     * @param message RecordActivityTaskHeartbeatRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RecordActivityTaskHeartbeatRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RecordActivityTaskHeartbeatRequest
                     * @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): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatRequest;

                    /**
                     * Decodes a RecordActivityTaskHeartbeatRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RecordActivityTaskHeartbeatRequest
                     * @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)): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatRequest;

                    /**
                     * Creates a RecordActivityTaskHeartbeatRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RecordActivityTaskHeartbeatRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatRequest;

                    /**
                     * Creates a plain object from a RecordActivityTaskHeartbeatRequest message. Also converts values to other types if specified.
                     * @param message RecordActivityTaskHeartbeatRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RecordActivityTaskHeartbeatRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RecordActivityTaskHeartbeatRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RecordActivityTaskHeartbeatResponse. */
                interface IRecordActivityTaskHeartbeatResponse {

                    /**
                     * Will be set to true if the activity has been asked to cancel itself. The SDK should then
                     * notify the activity of cancellation if it is still running.
                     */
                    cancelRequested?: (boolean|null);

                    /** Will be set to true if the activity is paused. */
                    activityPaused?: (boolean|null);

                    /**
                     * Will be set to true if the activity was reset.
                     * Applies only to the current run.
                     */
                    activityReset?: (boolean|null);
                }

                /** Represents a RecordActivityTaskHeartbeatResponse. */
                class RecordActivityTaskHeartbeatResponse implements IRecordActivityTaskHeartbeatResponse {

                    /**
                     * Constructs a new RecordActivityTaskHeartbeatResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatResponse);

                    /**
                     * Will be set to true if the activity has been asked to cancel itself. The SDK should then
                     * notify the activity of cancellation if it is still running.
                     */
                    public cancelRequested: boolean;

                    /** Will be set to true if the activity is paused. */
                    public activityPaused: boolean;

                    /**
                     * Will be set to true if the activity was reset.
                     * Applies only to the current run.
                     */
                    public activityReset: boolean;

                    /**
                     * Creates a new RecordActivityTaskHeartbeatResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RecordActivityTaskHeartbeatResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatResponse): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatResponse;

                    /**
                     * Encodes the specified RecordActivityTaskHeartbeatResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatResponse.verify|verify} messages.
                     * @param message RecordActivityTaskHeartbeatResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RecordActivityTaskHeartbeatResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatResponse.verify|verify} messages.
                     * @param message RecordActivityTaskHeartbeatResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RecordActivityTaskHeartbeatResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RecordActivityTaskHeartbeatResponse
                     * @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): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatResponse;

                    /**
                     * Decodes a RecordActivityTaskHeartbeatResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RecordActivityTaskHeartbeatResponse
                     * @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)): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatResponse;

                    /**
                     * Creates a RecordActivityTaskHeartbeatResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RecordActivityTaskHeartbeatResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatResponse;

                    /**
                     * Creates a plain object from a RecordActivityTaskHeartbeatResponse message. Also converts values to other types if specified.
                     * @param message RecordActivityTaskHeartbeatResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RecordActivityTaskHeartbeatResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RecordActivityTaskHeartbeatResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RecordActivityTaskHeartbeatByIdRequest. */
                interface IRecordActivityTaskHeartbeatByIdRequest {

                    /** Namespace of the workflow which scheduled this activity */
                    namespace?: (string|null);

                    /** Id of the workflow which scheduled this activity, leave empty to target a standalone activity */
                    workflowId?: (string|null);

                    /**
                     * For a workflow activity - the run ID of the workflow which scheduled this activity.
                     * For a standalone activity - the run ID of the activity.
                     */
                    runId?: (string|null);

                    /** Id of the activity we're heartbeating */
                    activityId?: (string|null);

                    /** Arbitrary data, of which the most recent call is kept, to store for this activity */
                    details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);
                }

                /** Represents a RecordActivityTaskHeartbeatByIdRequest. */
                class RecordActivityTaskHeartbeatByIdRequest implements IRecordActivityTaskHeartbeatByIdRequest {

                    /**
                     * Constructs a new RecordActivityTaskHeartbeatByIdRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatByIdRequest);

                    /** Namespace of the workflow which scheduled this activity */
                    public namespace: string;

                    /** Id of the workflow which scheduled this activity, leave empty to target a standalone activity */
                    public workflowId: string;

                    /**
                     * For a workflow activity - the run ID of the workflow which scheduled this activity.
                     * For a standalone activity - the run ID of the activity.
                     */
                    public runId: string;

                    /** Id of the activity we're heartbeating */
                    public activityId: string;

                    /** Arbitrary data, of which the most recent call is kept, to store for this activity */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /**
                     * Creates a new RecordActivityTaskHeartbeatByIdRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RecordActivityTaskHeartbeatByIdRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatByIdRequest): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdRequest;

                    /**
                     * Encodes the specified RecordActivityTaskHeartbeatByIdRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdRequest.verify|verify} messages.
                     * @param message RecordActivityTaskHeartbeatByIdRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatByIdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RecordActivityTaskHeartbeatByIdRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdRequest.verify|verify} messages.
                     * @param message RecordActivityTaskHeartbeatByIdRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatByIdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RecordActivityTaskHeartbeatByIdRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RecordActivityTaskHeartbeatByIdRequest
                     * @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): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdRequest;

                    /**
                     * Decodes a RecordActivityTaskHeartbeatByIdRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RecordActivityTaskHeartbeatByIdRequest
                     * @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)): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdRequest;

                    /**
                     * Creates a RecordActivityTaskHeartbeatByIdRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RecordActivityTaskHeartbeatByIdRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdRequest;

                    /**
                     * Creates a plain object from a RecordActivityTaskHeartbeatByIdRequest message. Also converts values to other types if specified.
                     * @param message RecordActivityTaskHeartbeatByIdRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RecordActivityTaskHeartbeatByIdRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RecordActivityTaskHeartbeatByIdRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RecordActivityTaskHeartbeatByIdResponse. */
                interface IRecordActivityTaskHeartbeatByIdResponse {

                    /**
                     * Will be set to true if the activity has been asked to cancel itself. The SDK should then
                     * notify the activity of cancellation if it is still running.
                     */
                    cancelRequested?: (boolean|null);

                    /** Will be set to true if the activity is paused. */
                    activityPaused?: (boolean|null);

                    /**
                     * Will be set to true if the activity was reset.
                     * Applies only to the current run.
                     */
                    activityReset?: (boolean|null);
                }

                /** Represents a RecordActivityTaskHeartbeatByIdResponse. */
                class RecordActivityTaskHeartbeatByIdResponse implements IRecordActivityTaskHeartbeatByIdResponse {

                    /**
                     * Constructs a new RecordActivityTaskHeartbeatByIdResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatByIdResponse);

                    /**
                     * Will be set to true if the activity has been asked to cancel itself. The SDK should then
                     * notify the activity of cancellation if it is still running.
                     */
                    public cancelRequested: boolean;

                    /** Will be set to true if the activity is paused. */
                    public activityPaused: boolean;

                    /**
                     * Will be set to true if the activity was reset.
                     * Applies only to the current run.
                     */
                    public activityReset: boolean;

                    /**
                     * Creates a new RecordActivityTaskHeartbeatByIdResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RecordActivityTaskHeartbeatByIdResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatByIdResponse): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdResponse;

                    /**
                     * Encodes the specified RecordActivityTaskHeartbeatByIdResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdResponse.verify|verify} messages.
                     * @param message RecordActivityTaskHeartbeatByIdResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatByIdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RecordActivityTaskHeartbeatByIdResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdResponse.verify|verify} messages.
                     * @param message RecordActivityTaskHeartbeatByIdResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatByIdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RecordActivityTaskHeartbeatByIdResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RecordActivityTaskHeartbeatByIdResponse
                     * @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): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdResponse;

                    /**
                     * Decodes a RecordActivityTaskHeartbeatByIdResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RecordActivityTaskHeartbeatByIdResponse
                     * @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)): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdResponse;

                    /**
                     * Creates a RecordActivityTaskHeartbeatByIdResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RecordActivityTaskHeartbeatByIdResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdResponse;

                    /**
                     * Creates a plain object from a RecordActivityTaskHeartbeatByIdResponse message. Also converts values to other types if specified.
                     * @param message RecordActivityTaskHeartbeatByIdResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RecordActivityTaskHeartbeatByIdResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RecordActivityTaskHeartbeatByIdResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskCompletedRequest. */
                interface IRespondActivityTaskCompletedRequest {

                    /** The task token as received in `PollActivityTaskQueueResponse` */
                    taskToken?: (Uint8Array|null);

                    /** The result of successfully executing the activity */
                    result?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /** RespondActivityTaskCompletedRequest namespace */
                    namespace?: (string|null);

                    /**
                     * Version info of the worker who processed this task. This message's `build_id` field should
                     * always be set by SDKs. Workers opting into versioning will also set the `use_versioning`
                     * field to true. See message docstrings for more.
                     * Deprecated. Use `deployment_options` instead.
                     */
                    workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Deployment info of the worker that completed this task. Must be present if user has set
                     * `WorkerDeploymentOptions` regardless of versioning being enabled or not.
                     * Deprecated. Replaced with `deployment_options`.
                     */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Worker deployment options that user has set in the worker. */
                    deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);
                }

                /** Represents a RespondActivityTaskCompletedRequest. */
                class RespondActivityTaskCompletedRequest implements IRespondActivityTaskCompletedRequest {

                    /**
                     * Constructs a new RespondActivityTaskCompletedRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedRequest);

                    /** The task token as received in `PollActivityTaskQueueResponse` */
                    public taskToken: Uint8Array;

                    /** The result of successfully executing the activity */
                    public result?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /** RespondActivityTaskCompletedRequest namespace. */
                    public namespace: string;

                    /**
                     * Version info of the worker who processed this task. This message's `build_id` field should
                     * always be set by SDKs. Workers opting into versioning will also set the `use_versioning`
                     * field to true. See message docstrings for more.
                     * Deprecated. Use `deployment_options` instead.
                     */
                    public workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Deployment info of the worker that completed this task. Must be present if user has set
                     * `WorkerDeploymentOptions` regardless of versioning being enabled or not.
                     * Deprecated. Replaced with `deployment_options`.
                     */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Worker deployment options that user has set in the worker. */
                    public deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /**
                     * Creates a new RespondActivityTaskCompletedRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskCompletedRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedRequest): temporal.api.workflowservice.v1.RespondActivityTaskCompletedRequest;

                    /**
                     * Encodes the specified RespondActivityTaskCompletedRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCompletedRequest.verify|verify} messages.
                     * @param message RespondActivityTaskCompletedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskCompletedRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCompletedRequest.verify|verify} messages.
                     * @param message RespondActivityTaskCompletedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskCompletedRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskCompletedRequest
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskCompletedRequest;

                    /**
                     * Decodes a RespondActivityTaskCompletedRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskCompletedRequest
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskCompletedRequest;

                    /**
                     * Creates a RespondActivityTaskCompletedRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskCompletedRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskCompletedRequest;

                    /**
                     * Creates a plain object from a RespondActivityTaskCompletedRequest message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskCompletedRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskCompletedRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskCompletedRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskCompletedRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskCompletedResponse. */
                interface IRespondActivityTaskCompletedResponse {
                }

                /** Represents a RespondActivityTaskCompletedResponse. */
                class RespondActivityTaskCompletedResponse implements IRespondActivityTaskCompletedResponse {

                    /**
                     * Constructs a new RespondActivityTaskCompletedResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedResponse);

                    /**
                     * Creates a new RespondActivityTaskCompletedResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskCompletedResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedResponse): temporal.api.workflowservice.v1.RespondActivityTaskCompletedResponse;

                    /**
                     * Encodes the specified RespondActivityTaskCompletedResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCompletedResponse.verify|verify} messages.
                     * @param message RespondActivityTaskCompletedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskCompletedResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCompletedResponse.verify|verify} messages.
                     * @param message RespondActivityTaskCompletedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskCompletedResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskCompletedResponse
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskCompletedResponse;

                    /**
                     * Decodes a RespondActivityTaskCompletedResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskCompletedResponse
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskCompletedResponse;

                    /**
                     * Creates a RespondActivityTaskCompletedResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskCompletedResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskCompletedResponse;

                    /**
                     * Creates a plain object from a RespondActivityTaskCompletedResponse message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskCompletedResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskCompletedResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskCompletedResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskCompletedResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskCompletedByIdRequest. */
                interface IRespondActivityTaskCompletedByIdRequest {

                    /** Namespace of the workflow which scheduled this activity */
                    namespace?: (string|null);

                    /** Id of the workflow which scheduled this activity, leave empty to target a standalone activity */
                    workflowId?: (string|null);

                    /**
                     * For a workflow activity - the run ID of the workflow which scheduled this activity.
                     * For a standalone activity - the run ID of the activity.
                     */
                    runId?: (string|null);

                    /** Id of the activity to complete */
                    activityId?: (string|null);

                    /** The serialized result of activity execution */
                    result?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);
                }

                /** Represents a RespondActivityTaskCompletedByIdRequest. */
                class RespondActivityTaskCompletedByIdRequest implements IRespondActivityTaskCompletedByIdRequest {

                    /**
                     * Constructs a new RespondActivityTaskCompletedByIdRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedByIdRequest);

                    /** Namespace of the workflow which scheduled this activity */
                    public namespace: string;

                    /** Id of the workflow which scheduled this activity, leave empty to target a standalone activity */
                    public workflowId: string;

                    /**
                     * For a workflow activity - the run ID of the workflow which scheduled this activity.
                     * For a standalone activity - the run ID of the activity.
                     */
                    public runId: string;

                    /** Id of the activity to complete */
                    public activityId: string;

                    /** The serialized result of activity execution */
                    public result?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /**
                     * Creates a new RespondActivityTaskCompletedByIdRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskCompletedByIdRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedByIdRequest): temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdRequest;

                    /**
                     * Encodes the specified RespondActivityTaskCompletedByIdRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdRequest.verify|verify} messages.
                     * @param message RespondActivityTaskCompletedByIdRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedByIdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskCompletedByIdRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdRequest.verify|verify} messages.
                     * @param message RespondActivityTaskCompletedByIdRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedByIdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskCompletedByIdRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskCompletedByIdRequest
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdRequest;

                    /**
                     * Decodes a RespondActivityTaskCompletedByIdRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskCompletedByIdRequest
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdRequest;

                    /**
                     * Creates a RespondActivityTaskCompletedByIdRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskCompletedByIdRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdRequest;

                    /**
                     * Creates a plain object from a RespondActivityTaskCompletedByIdRequest message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskCompletedByIdRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskCompletedByIdRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskCompletedByIdRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskCompletedByIdResponse. */
                interface IRespondActivityTaskCompletedByIdResponse {
                }

                /** Represents a RespondActivityTaskCompletedByIdResponse. */
                class RespondActivityTaskCompletedByIdResponse implements IRespondActivityTaskCompletedByIdResponse {

                    /**
                     * Constructs a new RespondActivityTaskCompletedByIdResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedByIdResponse);

                    /**
                     * Creates a new RespondActivityTaskCompletedByIdResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskCompletedByIdResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedByIdResponse): temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdResponse;

                    /**
                     * Encodes the specified RespondActivityTaskCompletedByIdResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdResponse.verify|verify} messages.
                     * @param message RespondActivityTaskCompletedByIdResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedByIdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskCompletedByIdResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdResponse.verify|verify} messages.
                     * @param message RespondActivityTaskCompletedByIdResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedByIdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskCompletedByIdResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskCompletedByIdResponse
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdResponse;

                    /**
                     * Decodes a RespondActivityTaskCompletedByIdResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskCompletedByIdResponse
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdResponse;

                    /**
                     * Creates a RespondActivityTaskCompletedByIdResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskCompletedByIdResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdResponse;

                    /**
                     * Creates a plain object from a RespondActivityTaskCompletedByIdResponse message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskCompletedByIdResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskCompletedByIdResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskCompletedByIdResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskFailedRequest. */
                interface IRespondActivityTaskFailedRequest {

                    /** The task token as received in `PollActivityTaskQueueResponse` */
                    taskToken?: (Uint8Array|null);

                    /** Detailed failure information */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /** RespondActivityTaskFailedRequest namespace */
                    namespace?: (string|null);

                    /** Additional details to be stored as last activity heartbeat */
                    lastHeartbeatDetails?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Version info of the worker who processed this task. This message's `build_id` field should
                     * always be set by SDKs. Workers opting into versioning will also set the `use_versioning`
                     * field to true. See message docstrings for more.
                     * Deprecated. Use `deployment_options` instead.
                     */
                    workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Deployment info of the worker that completed this task. Must be present if user has set
                     * `WorkerDeploymentOptions` regardless of versioning being enabled or not.
                     * Deprecated. Replaced with `deployment_options`.
                     */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Worker deployment options that user has set in the worker. */
                    deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);
                }

                /** Represents a RespondActivityTaskFailedRequest. */
                class RespondActivityTaskFailedRequest implements IRespondActivityTaskFailedRequest {

                    /**
                     * Constructs a new RespondActivityTaskFailedRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskFailedRequest);

                    /** The task token as received in `PollActivityTaskQueueResponse` */
                    public taskToken: Uint8Array;

                    /** Detailed failure information */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /** RespondActivityTaskFailedRequest namespace. */
                    public namespace: string;

                    /** Additional details to be stored as last activity heartbeat */
                    public lastHeartbeatDetails?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Version info of the worker who processed this task. This message's `build_id` field should
                     * always be set by SDKs. Workers opting into versioning will also set the `use_versioning`
                     * field to true. See message docstrings for more.
                     * Deprecated. Use `deployment_options` instead.
                     */
                    public workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Deployment info of the worker that completed this task. Must be present if user has set
                     * `WorkerDeploymentOptions` regardless of versioning being enabled or not.
                     * Deprecated. Replaced with `deployment_options`.
                     */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Worker deployment options that user has set in the worker. */
                    public deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /**
                     * Creates a new RespondActivityTaskFailedRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskFailedRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskFailedRequest): temporal.api.workflowservice.v1.RespondActivityTaskFailedRequest;

                    /**
                     * Encodes the specified RespondActivityTaskFailedRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskFailedRequest.verify|verify} messages.
                     * @param message RespondActivityTaskFailedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskFailedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskFailedRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskFailedRequest.verify|verify} messages.
                     * @param message RespondActivityTaskFailedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskFailedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskFailedRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskFailedRequest
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskFailedRequest;

                    /**
                     * Decodes a RespondActivityTaskFailedRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskFailedRequest
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskFailedRequest;

                    /**
                     * Creates a RespondActivityTaskFailedRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskFailedRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskFailedRequest;

                    /**
                     * Creates a plain object from a RespondActivityTaskFailedRequest message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskFailedRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskFailedRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskFailedRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskFailedRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskFailedResponse. */
                interface IRespondActivityTaskFailedResponse {

                    /**
                     * Server validation failures could include
                     * last_heartbeat_details payload is too large, request failure is too large
                     */
                    failures?: (temporal.api.failure.v1.IFailure[]|null);
                }

                /** Represents a RespondActivityTaskFailedResponse. */
                class RespondActivityTaskFailedResponse implements IRespondActivityTaskFailedResponse {

                    /**
                     * Constructs a new RespondActivityTaskFailedResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskFailedResponse);

                    /**
                     * Server validation failures could include
                     * last_heartbeat_details payload is too large, request failure is too large
                     */
                    public failures: temporal.api.failure.v1.IFailure[];

                    /**
                     * Creates a new RespondActivityTaskFailedResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskFailedResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskFailedResponse): temporal.api.workflowservice.v1.RespondActivityTaskFailedResponse;

                    /**
                     * Encodes the specified RespondActivityTaskFailedResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskFailedResponse.verify|verify} messages.
                     * @param message RespondActivityTaskFailedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskFailedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskFailedResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskFailedResponse.verify|verify} messages.
                     * @param message RespondActivityTaskFailedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskFailedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskFailedResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskFailedResponse
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskFailedResponse;

                    /**
                     * Decodes a RespondActivityTaskFailedResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskFailedResponse
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskFailedResponse;

                    /**
                     * Creates a RespondActivityTaskFailedResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskFailedResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskFailedResponse;

                    /**
                     * Creates a plain object from a RespondActivityTaskFailedResponse message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskFailedResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskFailedResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskFailedResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskFailedResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskFailedByIdRequest. */
                interface IRespondActivityTaskFailedByIdRequest {

                    /** Namespace of the workflow which scheduled this activity */
                    namespace?: (string|null);

                    /** Id of the workflow which scheduled this activity, leave empty to target a standalone activity */
                    workflowId?: (string|null);

                    /**
                     * For a workflow activity - the run ID of the workflow which scheduled this activity.
                     * For a standalone activity - the run ID of the activity.
                     */
                    runId?: (string|null);

                    /** Id of the activity to fail */
                    activityId?: (string|null);

                    /** Detailed failure information */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /** Additional details to be stored as last activity heartbeat */
                    lastHeartbeatDetails?: (temporal.api.common.v1.IPayloads|null);
                }

                /** Represents a RespondActivityTaskFailedByIdRequest. */
                class RespondActivityTaskFailedByIdRequest implements IRespondActivityTaskFailedByIdRequest {

                    /**
                     * Constructs a new RespondActivityTaskFailedByIdRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskFailedByIdRequest);

                    /** Namespace of the workflow which scheduled this activity */
                    public namespace: string;

                    /** Id of the workflow which scheduled this activity, leave empty to target a standalone activity */
                    public workflowId: string;

                    /**
                     * For a workflow activity - the run ID of the workflow which scheduled this activity.
                     * For a standalone activity - the run ID of the activity.
                     */
                    public runId: string;

                    /** Id of the activity to fail */
                    public activityId: string;

                    /** Detailed failure information */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /** Additional details to be stored as last activity heartbeat */
                    public lastHeartbeatDetails?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Creates a new RespondActivityTaskFailedByIdRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskFailedByIdRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskFailedByIdRequest): temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdRequest;

                    /**
                     * Encodes the specified RespondActivityTaskFailedByIdRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdRequest.verify|verify} messages.
                     * @param message RespondActivityTaskFailedByIdRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskFailedByIdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskFailedByIdRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdRequest.verify|verify} messages.
                     * @param message RespondActivityTaskFailedByIdRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskFailedByIdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskFailedByIdRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskFailedByIdRequest
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdRequest;

                    /**
                     * Decodes a RespondActivityTaskFailedByIdRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskFailedByIdRequest
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdRequest;

                    /**
                     * Creates a RespondActivityTaskFailedByIdRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskFailedByIdRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdRequest;

                    /**
                     * Creates a plain object from a RespondActivityTaskFailedByIdRequest message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskFailedByIdRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskFailedByIdRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskFailedByIdRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskFailedByIdResponse. */
                interface IRespondActivityTaskFailedByIdResponse {

                    /**
                     * Server validation failures could include
                     * last_heartbeat_details payload is too large, request failure is too large
                     */
                    failures?: (temporal.api.failure.v1.IFailure[]|null);
                }

                /** Represents a RespondActivityTaskFailedByIdResponse. */
                class RespondActivityTaskFailedByIdResponse implements IRespondActivityTaskFailedByIdResponse {

                    /**
                     * Constructs a new RespondActivityTaskFailedByIdResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskFailedByIdResponse);

                    /**
                     * Server validation failures could include
                     * last_heartbeat_details payload is too large, request failure is too large
                     */
                    public failures: temporal.api.failure.v1.IFailure[];

                    /**
                     * Creates a new RespondActivityTaskFailedByIdResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskFailedByIdResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskFailedByIdResponse): temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdResponse;

                    /**
                     * Encodes the specified RespondActivityTaskFailedByIdResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdResponse.verify|verify} messages.
                     * @param message RespondActivityTaskFailedByIdResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskFailedByIdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskFailedByIdResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdResponse.verify|verify} messages.
                     * @param message RespondActivityTaskFailedByIdResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskFailedByIdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskFailedByIdResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskFailedByIdResponse
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdResponse;

                    /**
                     * Decodes a RespondActivityTaskFailedByIdResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskFailedByIdResponse
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdResponse;

                    /**
                     * Creates a RespondActivityTaskFailedByIdResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskFailedByIdResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdResponse;

                    /**
                     * Creates a plain object from a RespondActivityTaskFailedByIdResponse message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskFailedByIdResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskFailedByIdResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskFailedByIdResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskCanceledRequest. */
                interface IRespondActivityTaskCanceledRequest {

                    /** The task token as received in `PollActivityTaskQueueResponse` */
                    taskToken?: (Uint8Array|null);

                    /** Serialized additional information to attach to the cancellation */
                    details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /** RespondActivityTaskCanceledRequest namespace */
                    namespace?: (string|null);

                    /**
                     * Version info of the worker who processed this task. This message's `build_id` field should
                     * always be set by SDKs. Workers opting into versioning will also set the `use_versioning`
                     * field to true. See message docstrings for more.
                     * Deprecated. Use `deployment_options` instead.
                     */
                    workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Deployment info of the worker that completed this task. Must be present if user has set
                     * `WorkerDeploymentOptions` regardless of versioning being enabled or not.
                     * Deprecated. Replaced with `deployment_options`.
                     */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Worker deployment options that user has set in the worker. */
                    deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);
                }

                /** Represents a RespondActivityTaskCanceledRequest. */
                class RespondActivityTaskCanceledRequest implements IRespondActivityTaskCanceledRequest {

                    /**
                     * Constructs a new RespondActivityTaskCanceledRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledRequest);

                    /** The task token as received in `PollActivityTaskQueueResponse` */
                    public taskToken: Uint8Array;

                    /** Serialized additional information to attach to the cancellation */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /** RespondActivityTaskCanceledRequest namespace. */
                    public namespace: string;

                    /**
                     * Version info of the worker who processed this task. This message's `build_id` field should
                     * always be set by SDKs. Workers opting into versioning will also set the `use_versioning`
                     * field to true. See message docstrings for more.
                     * Deprecated. Use `deployment_options` instead.
                     */
                    public workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Deployment info of the worker that completed this task. Must be present if user has set
                     * `WorkerDeploymentOptions` regardless of versioning being enabled or not.
                     * Deprecated. Replaced with `deployment_options`.
                     */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Worker deployment options that user has set in the worker. */
                    public deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /**
                     * Creates a new RespondActivityTaskCanceledRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskCanceledRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledRequest): temporal.api.workflowservice.v1.RespondActivityTaskCanceledRequest;

                    /**
                     * Encodes the specified RespondActivityTaskCanceledRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCanceledRequest.verify|verify} messages.
                     * @param message RespondActivityTaskCanceledRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskCanceledRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCanceledRequest.verify|verify} messages.
                     * @param message RespondActivityTaskCanceledRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskCanceledRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskCanceledRequest
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskCanceledRequest;

                    /**
                     * Decodes a RespondActivityTaskCanceledRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskCanceledRequest
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskCanceledRequest;

                    /**
                     * Creates a RespondActivityTaskCanceledRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskCanceledRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskCanceledRequest;

                    /**
                     * Creates a plain object from a RespondActivityTaskCanceledRequest message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskCanceledRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskCanceledRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskCanceledRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskCanceledRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskCanceledResponse. */
                interface IRespondActivityTaskCanceledResponse {
                }

                /** Represents a RespondActivityTaskCanceledResponse. */
                class RespondActivityTaskCanceledResponse implements IRespondActivityTaskCanceledResponse {

                    /**
                     * Constructs a new RespondActivityTaskCanceledResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledResponse);

                    /**
                     * Creates a new RespondActivityTaskCanceledResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskCanceledResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledResponse): temporal.api.workflowservice.v1.RespondActivityTaskCanceledResponse;

                    /**
                     * Encodes the specified RespondActivityTaskCanceledResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCanceledResponse.verify|verify} messages.
                     * @param message RespondActivityTaskCanceledResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskCanceledResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCanceledResponse.verify|verify} messages.
                     * @param message RespondActivityTaskCanceledResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskCanceledResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskCanceledResponse
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskCanceledResponse;

                    /**
                     * Decodes a RespondActivityTaskCanceledResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskCanceledResponse
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskCanceledResponse;

                    /**
                     * Creates a RespondActivityTaskCanceledResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskCanceledResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskCanceledResponse;

                    /**
                     * Creates a plain object from a RespondActivityTaskCanceledResponse message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskCanceledResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskCanceledResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskCanceledResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskCanceledResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskCanceledByIdRequest. */
                interface IRespondActivityTaskCanceledByIdRequest {

                    /** Namespace of the workflow which scheduled this activity */
                    namespace?: (string|null);

                    /** Id of the workflow which scheduled this activity, leave empty to target a standalone activity */
                    workflowId?: (string|null);

                    /**
                     * For a workflow activity - the run ID of the workflow which scheduled this activity.
                     * For a standalone activity - the run ID of the activity.
                     */
                    runId?: (string|null);

                    /** Id of the activity to confirm is cancelled */
                    activityId?: (string|null);

                    /** Serialized additional information to attach to the cancellation */
                    details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /** Worker deployment options that user has set in the worker. */
                    deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);
                }

                /** Represents a RespondActivityTaskCanceledByIdRequest. */
                class RespondActivityTaskCanceledByIdRequest implements IRespondActivityTaskCanceledByIdRequest {

                    /**
                     * Constructs a new RespondActivityTaskCanceledByIdRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledByIdRequest);

                    /** Namespace of the workflow which scheduled this activity */
                    public namespace: string;

                    /** Id of the workflow which scheduled this activity, leave empty to target a standalone activity */
                    public workflowId: string;

                    /**
                     * For a workflow activity - the run ID of the workflow which scheduled this activity.
                     * For a standalone activity - the run ID of the activity.
                     */
                    public runId: string;

                    /** Id of the activity to confirm is cancelled */
                    public activityId: string;

                    /** Serialized additional information to attach to the cancellation */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /** Worker deployment options that user has set in the worker. */
                    public deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /**
                     * Creates a new RespondActivityTaskCanceledByIdRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskCanceledByIdRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledByIdRequest): temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdRequest;

                    /**
                     * Encodes the specified RespondActivityTaskCanceledByIdRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdRequest.verify|verify} messages.
                     * @param message RespondActivityTaskCanceledByIdRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledByIdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskCanceledByIdRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdRequest.verify|verify} messages.
                     * @param message RespondActivityTaskCanceledByIdRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledByIdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskCanceledByIdRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskCanceledByIdRequest
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdRequest;

                    /**
                     * Decodes a RespondActivityTaskCanceledByIdRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskCanceledByIdRequest
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdRequest;

                    /**
                     * Creates a RespondActivityTaskCanceledByIdRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskCanceledByIdRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdRequest;

                    /**
                     * Creates a plain object from a RespondActivityTaskCanceledByIdRequest message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskCanceledByIdRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskCanceledByIdRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskCanceledByIdRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondActivityTaskCanceledByIdResponse. */
                interface IRespondActivityTaskCanceledByIdResponse {
                }

                /** Represents a RespondActivityTaskCanceledByIdResponse. */
                class RespondActivityTaskCanceledByIdResponse implements IRespondActivityTaskCanceledByIdResponse {

                    /**
                     * Constructs a new RespondActivityTaskCanceledByIdResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledByIdResponse);

                    /**
                     * Creates a new RespondActivityTaskCanceledByIdResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondActivityTaskCanceledByIdResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledByIdResponse): temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdResponse;

                    /**
                     * Encodes the specified RespondActivityTaskCanceledByIdResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdResponse.verify|verify} messages.
                     * @param message RespondActivityTaskCanceledByIdResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledByIdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondActivityTaskCanceledByIdResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdResponse.verify|verify} messages.
                     * @param message RespondActivityTaskCanceledByIdResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledByIdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondActivityTaskCanceledByIdResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondActivityTaskCanceledByIdResponse
                     * @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): temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdResponse;

                    /**
                     * Decodes a RespondActivityTaskCanceledByIdResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondActivityTaskCanceledByIdResponse
                     * @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)): temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdResponse;

                    /**
                     * Creates a RespondActivityTaskCanceledByIdResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondActivityTaskCanceledByIdResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdResponse;

                    /**
                     * Creates a plain object from a RespondActivityTaskCanceledByIdResponse message. Also converts values to other types if specified.
                     * @param message RespondActivityTaskCanceledByIdResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondActivityTaskCanceledByIdResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondActivityTaskCanceledByIdResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RequestCancelWorkflowExecutionRequest. */
                interface IRequestCancelWorkflowExecutionRequest {

                    /** RequestCancelWorkflowExecutionRequest namespace */
                    namespace?: (string|null);

                    /** RequestCancelWorkflowExecutionRequest workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /** Used to de-dupe cancellation requests */
                    requestId?: (string|null);

                    /**
                     * If set, this call will error if the most recent (if no run id is set on
                     * `workflow_execution`), or specified (if it is) workflow execution is not part of the same
                     * execution chain as this id.
                     */
                    firstExecutionRunId?: (string|null);

                    /** Reason for requesting the cancellation */
                    reason?: (string|null);

                    /** Links to be associated with the WorkflowExecutionCanceled event. */
                    links?: (temporal.api.common.v1.ILink[]|null);
                }

                /** Represents a RequestCancelWorkflowExecutionRequest. */
                class RequestCancelWorkflowExecutionRequest implements IRequestCancelWorkflowExecutionRequest {

                    /**
                     * Constructs a new RequestCancelWorkflowExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRequestCancelWorkflowExecutionRequest);

                    /** RequestCancelWorkflowExecutionRequest namespace. */
                    public namespace: string;

                    /** RequestCancelWorkflowExecutionRequest workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /** Used to de-dupe cancellation requests */
                    public requestId: string;

                    /**
                     * If set, this call will error if the most recent (if no run id is set on
                     * `workflow_execution`), or specified (if it is) workflow execution is not part of the same
                     * execution chain as this id.
                     */
                    public firstExecutionRunId: string;

                    /** Reason for requesting the cancellation */
                    public reason: string;

                    /** Links to be associated with the WorkflowExecutionCanceled event. */
                    public links: temporal.api.common.v1.ILink[];

                    /**
                     * Creates a new RequestCancelWorkflowExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RequestCancelWorkflowExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRequestCancelWorkflowExecutionRequest): temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionRequest;

                    /**
                     * Encodes the specified RequestCancelWorkflowExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionRequest.verify|verify} messages.
                     * @param message RequestCancelWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRequestCancelWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RequestCancelWorkflowExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionRequest.verify|verify} messages.
                     * @param message RequestCancelWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRequestCancelWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RequestCancelWorkflowExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RequestCancelWorkflowExecutionRequest
                     * @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): temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionRequest;

                    /**
                     * Decodes a RequestCancelWorkflowExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RequestCancelWorkflowExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionRequest;

                    /**
                     * Creates a RequestCancelWorkflowExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RequestCancelWorkflowExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionRequest;

                    /**
                     * Creates a plain object from a RequestCancelWorkflowExecutionRequest message. Also converts values to other types if specified.
                     * @param message RequestCancelWorkflowExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RequestCancelWorkflowExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RequestCancelWorkflowExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RequestCancelWorkflowExecutionResponse. */
                interface IRequestCancelWorkflowExecutionResponse {
                }

                /** Represents a RequestCancelWorkflowExecutionResponse. */
                class RequestCancelWorkflowExecutionResponse implements IRequestCancelWorkflowExecutionResponse {

                    /**
                     * Constructs a new RequestCancelWorkflowExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRequestCancelWorkflowExecutionResponse);

                    /**
                     * Creates a new RequestCancelWorkflowExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RequestCancelWorkflowExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRequestCancelWorkflowExecutionResponse): temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionResponse;

                    /**
                     * Encodes the specified RequestCancelWorkflowExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionResponse.verify|verify} messages.
                     * @param message RequestCancelWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRequestCancelWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RequestCancelWorkflowExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionResponse.verify|verify} messages.
                     * @param message RequestCancelWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRequestCancelWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RequestCancelWorkflowExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RequestCancelWorkflowExecutionResponse
                     * @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): temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionResponse;

                    /**
                     * Decodes a RequestCancelWorkflowExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RequestCancelWorkflowExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionResponse;

                    /**
                     * Creates a RequestCancelWorkflowExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RequestCancelWorkflowExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionResponse;

                    /**
                     * Creates a plain object from a RequestCancelWorkflowExecutionResponse message. Also converts values to other types if specified.
                     * @param message RequestCancelWorkflowExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RequestCancelWorkflowExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RequestCancelWorkflowExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SignalWorkflowExecutionRequest. */
                interface ISignalWorkflowExecutionRequest {

                    /** SignalWorkflowExecutionRequest namespace */
                    namespace?: (string|null);

                    /** SignalWorkflowExecutionRequest workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The workflow author-defined name of the signal to send to the workflow */
                    signalName?: (string|null);

                    /** Serialized value(s) to provide with the signal */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /** Used to de-dupe sent signals */
                    requestId?: (string|null);

                    /** Deprecated. */
                    control?: (string|null);

                    /**
                     * Headers that are passed with the signal to the processing workflow.
                     * These can include things like auth or tracing tokens.
                     */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** Links to be associated with the WorkflowExecutionSignaled event. */
                    links?: (temporal.api.common.v1.ILink[]|null);
                }

                /**
                 * Keep the parameters in sync with:
                 * - temporal.api.batch.v1.BatchOperationSignal.
                 * - temporal.api.workflow.v1.PostResetOperation.SignalWorkflow.
                 */
                class SignalWorkflowExecutionRequest implements ISignalWorkflowExecutionRequest {

                    /**
                     * Constructs a new SignalWorkflowExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISignalWorkflowExecutionRequest);

                    /** SignalWorkflowExecutionRequest namespace. */
                    public namespace: string;

                    /** SignalWorkflowExecutionRequest workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The workflow author-defined name of the signal to send to the workflow */
                    public signalName: string;

                    /** Serialized value(s) to provide with the signal */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /** Used to de-dupe sent signals */
                    public requestId: string;

                    /** Deprecated. */
                    public control: string;

                    /**
                     * Headers that are passed with the signal to the processing workflow.
                     * These can include things like auth or tracing tokens.
                     */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** Links to be associated with the WorkflowExecutionSignaled event. */
                    public links: temporal.api.common.v1.ILink[];

                    /**
                     * Creates a new SignalWorkflowExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SignalWorkflowExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISignalWorkflowExecutionRequest): temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest;

                    /**
                     * Encodes the specified SignalWorkflowExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest.verify|verify} messages.
                     * @param message SignalWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISignalWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SignalWorkflowExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest.verify|verify} messages.
                     * @param message SignalWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISignalWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SignalWorkflowExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SignalWorkflowExecutionRequest
                     * @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): temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest;

                    /**
                     * Decodes a SignalWorkflowExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SignalWorkflowExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest;

                    /**
                     * Creates a SignalWorkflowExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SignalWorkflowExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest;

                    /**
                     * Creates a plain object from a SignalWorkflowExecutionRequest message. Also converts values to other types if specified.
                     * @param message SignalWorkflowExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SignalWorkflowExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SignalWorkflowExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SignalWorkflowExecutionResponse. */
                interface ISignalWorkflowExecutionResponse {
                }

                /** Represents a SignalWorkflowExecutionResponse. */
                class SignalWorkflowExecutionResponse implements ISignalWorkflowExecutionResponse {

                    /**
                     * Constructs a new SignalWorkflowExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISignalWorkflowExecutionResponse);

                    /**
                     * Creates a new SignalWorkflowExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SignalWorkflowExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISignalWorkflowExecutionResponse): temporal.api.workflowservice.v1.SignalWorkflowExecutionResponse;

                    /**
                     * Encodes the specified SignalWorkflowExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.SignalWorkflowExecutionResponse.verify|verify} messages.
                     * @param message SignalWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISignalWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SignalWorkflowExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SignalWorkflowExecutionResponse.verify|verify} messages.
                     * @param message SignalWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISignalWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SignalWorkflowExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SignalWorkflowExecutionResponse
                     * @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): temporal.api.workflowservice.v1.SignalWorkflowExecutionResponse;

                    /**
                     * Decodes a SignalWorkflowExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SignalWorkflowExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.SignalWorkflowExecutionResponse;

                    /**
                     * Creates a SignalWorkflowExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SignalWorkflowExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SignalWorkflowExecutionResponse;

                    /**
                     * Creates a plain object from a SignalWorkflowExecutionResponse message. Also converts values to other types if specified.
                     * @param message SignalWorkflowExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SignalWorkflowExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SignalWorkflowExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SignalWorkflowExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SignalWithStartWorkflowExecutionRequest. */
                interface ISignalWithStartWorkflowExecutionRequest {

                    /** SignalWithStartWorkflowExecutionRequest namespace */
                    namespace?: (string|null);

                    /** SignalWithStartWorkflowExecutionRequest workflowId */
                    workflowId?: (string|null);

                    /** SignalWithStartWorkflowExecutionRequest workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** The task queue to start this workflow on, if it will be started */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** Serialized arguments to the workflow. These are passed as arguments to the workflow function. */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new */
                    workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run */
                    workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task */
                    workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /** Used to de-dupe signal w/ start requests */
                    requestId?: (string|null);

                    /**
                     * Defines whether to allow re-using the workflow id from a previously *closed* workflow.
                     * The default policy is WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE.
                     *
                     * See `workflow_id_reuse_policy` for handling a workflow id duplication with a *running* workflow.
                     */
                    workflowIdReusePolicy?: (temporal.api.enums.v1.WorkflowIdReusePolicy|null);

                    /**
                     * Defines how to resolve a workflow id conflict with a *running* workflow.
                     * The default policy is WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING.
                     * Note that WORKFLOW_ID_CONFLICT_POLICY_FAIL is an invalid option.
                     *
                     * See `workflow_id_reuse_policy` for handling a workflow id duplication with a *closed* workflow.
                     */
                    workflowIdConflictPolicy?: (temporal.api.enums.v1.WorkflowIdConflictPolicy|null);

                    /** The workflow author-defined name of the signal to send to the workflow */
                    signalName?: (string|null);

                    /** Serialized value(s) to provide with the signal */
                    signalInput?: (temporal.api.common.v1.IPayloads|null);

                    /** Deprecated. */
                    control?: (string|null);

                    /** Retry policy for the workflow */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** See https://docs.temporal.io/docs/content/what-is-a-temporal-cron-job/ */
                    cronSchedule?: (string|null);

                    /** SignalWithStartWorkflowExecutionRequest memo */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** SignalWithStartWorkflowExecutionRequest searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** SignalWithStartWorkflowExecutionRequest header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Time to wait before dispatching the first workflow task. Cannot be used with `cron_schedule`.
                     * Note that the signal will be delivered with the first workflow task. If the workflow gets
                     * another SignalWithStartWorkflow before the delay a workflow task will be dispatched immediately
                     * and the rest of the delay period will be ignored, even if that request also had a delay.
                     * Signal via SignalWorkflowExecution will not unblock the workflow.
                     */
                    workflowStartDelay?: (google.protobuf.IDuration|null);

                    /**
                     * Metadata on the workflow if it is started. This is carried over to the WorkflowExecutionInfo
                     * for use by user interfaces to display the fixed as-of-start summary and details of the
                     * workflow.
                     */
                    userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Links to be associated with the WorkflowExecutionStarted and WorkflowExecutionSignaled events. */
                    links?: (temporal.api.common.v1.ILink[]|null);

                    /**
                     * If set, takes precedence over the Versioning Behavior sent by the SDK on Workflow Task completion.
                     * To unset the override after the workflow is running, use UpdateWorkflowExecutionOptions.
                     */
                    versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /** Priority metadata */
                    priority?: (temporal.api.common.v1.IPriority|null);
                }

                /** Represents a SignalWithStartWorkflowExecutionRequest. */
                class SignalWithStartWorkflowExecutionRequest implements ISignalWithStartWorkflowExecutionRequest {

                    /**
                     * Constructs a new SignalWithStartWorkflowExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISignalWithStartWorkflowExecutionRequest);

                    /** SignalWithStartWorkflowExecutionRequest namespace. */
                    public namespace: string;

                    /** SignalWithStartWorkflowExecutionRequest workflowId. */
                    public workflowId: string;

                    /** SignalWithStartWorkflowExecutionRequest workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** The task queue to start this workflow on, if it will be started */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** Serialized arguments to the workflow. These are passed as arguments to the workflow function. */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new */
                    public workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run */
                    public workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task */
                    public workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /** Used to de-dupe signal w/ start requests */
                    public requestId: string;

                    /**
                     * Defines whether to allow re-using the workflow id from a previously *closed* workflow.
                     * The default policy is WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE.
                     *
                     * See `workflow_id_reuse_policy` for handling a workflow id duplication with a *running* workflow.
                     */
                    public workflowIdReusePolicy: temporal.api.enums.v1.WorkflowIdReusePolicy;

                    /**
                     * Defines how to resolve a workflow id conflict with a *running* workflow.
                     * The default policy is WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING.
                     * Note that WORKFLOW_ID_CONFLICT_POLICY_FAIL is an invalid option.
                     *
                     * See `workflow_id_reuse_policy` for handling a workflow id duplication with a *closed* workflow.
                     */
                    public workflowIdConflictPolicy: temporal.api.enums.v1.WorkflowIdConflictPolicy;

                    /** The workflow author-defined name of the signal to send to the workflow */
                    public signalName: string;

                    /** Serialized value(s) to provide with the signal */
                    public signalInput?: (temporal.api.common.v1.IPayloads|null);

                    /** Deprecated. */
                    public control: string;

                    /** Retry policy for the workflow */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** See https://docs.temporal.io/docs/content/what-is-a-temporal-cron-job/ */
                    public cronSchedule: string;

                    /** SignalWithStartWorkflowExecutionRequest memo. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** SignalWithStartWorkflowExecutionRequest searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** SignalWithStartWorkflowExecutionRequest header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Time to wait before dispatching the first workflow task. Cannot be used with `cron_schedule`.
                     * Note that the signal will be delivered with the first workflow task. If the workflow gets
                     * another SignalWithStartWorkflow before the delay a workflow task will be dispatched immediately
                     * and the rest of the delay period will be ignored, even if that request also had a delay.
                     * Signal via SignalWorkflowExecution will not unblock the workflow.
                     */
                    public workflowStartDelay?: (google.protobuf.IDuration|null);

                    /**
                     * Metadata on the workflow if it is started. This is carried over to the WorkflowExecutionInfo
                     * for use by user interfaces to display the fixed as-of-start summary and details of the
                     * workflow.
                     */
                    public userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Links to be associated with the WorkflowExecutionStarted and WorkflowExecutionSignaled events. */
                    public links: temporal.api.common.v1.ILink[];

                    /**
                     * If set, takes precedence over the Versioning Behavior sent by the SDK on Workflow Task completion.
                     * To unset the override after the workflow is running, use UpdateWorkflowExecutionOptions.
                     */
                    public versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /** Priority metadata */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * Creates a new SignalWithStartWorkflowExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SignalWithStartWorkflowExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISignalWithStartWorkflowExecutionRequest): temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionRequest;

                    /**
                     * Encodes the specified SignalWithStartWorkflowExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionRequest.verify|verify} messages.
                     * @param message SignalWithStartWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISignalWithStartWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SignalWithStartWorkflowExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionRequest.verify|verify} messages.
                     * @param message SignalWithStartWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISignalWithStartWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SignalWithStartWorkflowExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SignalWithStartWorkflowExecutionRequest
                     * @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): temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionRequest;

                    /**
                     * Decodes a SignalWithStartWorkflowExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SignalWithStartWorkflowExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionRequest;

                    /**
                     * Creates a SignalWithStartWorkflowExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SignalWithStartWorkflowExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionRequest;

                    /**
                     * Creates a plain object from a SignalWithStartWorkflowExecutionRequest message. Also converts values to other types if specified.
                     * @param message SignalWithStartWorkflowExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SignalWithStartWorkflowExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SignalWithStartWorkflowExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SignalWithStartWorkflowExecutionResponse. */
                interface ISignalWithStartWorkflowExecutionResponse {

                    /** The run id of the workflow that was started - or just signaled, if it was already running. */
                    runId?: (string|null);

                    /** If true, a new workflow was started. */
                    started?: (boolean|null);
                }

                /** Represents a SignalWithStartWorkflowExecutionResponse. */
                class SignalWithStartWorkflowExecutionResponse implements ISignalWithStartWorkflowExecutionResponse {

                    /**
                     * Constructs a new SignalWithStartWorkflowExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISignalWithStartWorkflowExecutionResponse);

                    /** The run id of the workflow that was started - or just signaled, if it was already running. */
                    public runId: string;

                    /** If true, a new workflow was started. */
                    public started: boolean;

                    /**
                     * Creates a new SignalWithStartWorkflowExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SignalWithStartWorkflowExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISignalWithStartWorkflowExecutionResponse): temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionResponse;

                    /**
                     * Encodes the specified SignalWithStartWorkflowExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionResponse.verify|verify} messages.
                     * @param message SignalWithStartWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISignalWithStartWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SignalWithStartWorkflowExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionResponse.verify|verify} messages.
                     * @param message SignalWithStartWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISignalWithStartWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SignalWithStartWorkflowExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SignalWithStartWorkflowExecutionResponse
                     * @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): temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionResponse;

                    /**
                     * Decodes a SignalWithStartWorkflowExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SignalWithStartWorkflowExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionResponse;

                    /**
                     * Creates a SignalWithStartWorkflowExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SignalWithStartWorkflowExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionResponse;

                    /**
                     * Creates a plain object from a SignalWithStartWorkflowExecutionResponse message. Also converts values to other types if specified.
                     * @param message SignalWithStartWorkflowExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SignalWithStartWorkflowExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SignalWithStartWorkflowExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResetWorkflowExecutionRequest. */
                interface IResetWorkflowExecutionRequest {

                    /** ResetWorkflowExecutionRequest namespace */
                    namespace?: (string|null);

                    /**
                     * The workflow to reset. If this contains a run ID then the workflow will be reset back to the
                     * provided event ID in that run. Otherwise it will be reset to the provided event ID in the
                     * current run. In all cases the current run will be terminated and a new run started.
                     */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ResetWorkflowExecutionRequest reason */
                    reason?: (string|null);

                    /**
                     * The id of a `WORKFLOW_TASK_COMPLETED`,`WORKFLOW_TASK_TIMED_OUT`, `WORKFLOW_TASK_FAILED`, or
                     * `WORKFLOW_TASK_STARTED` event to reset to.
                     */
                    workflowTaskFinishEventId?: (Long|null);

                    /** Used to de-dupe reset requests */
                    requestId?: (string|null);

                    /**
                     * Deprecated. Use `options`.
                     * Default: RESET_REAPPLY_TYPE_SIGNAL
                     */
                    resetReapplyType?: (temporal.api.enums.v1.ResetReapplyType|null);

                    /** Event types not to be reapplied */
                    resetReapplyExcludeTypes?: (temporal.api.enums.v1.ResetReapplyExcludeType[]|null);

                    /**
                     * Operations to perform after the workflow has been reset. These operations will be applied
                     * to the *new* run of the workflow execution in the order they are provided.
                     * All operations are applied to the workflow before the first new workflow task is generated
                     */
                    postResetOperations?: (temporal.api.workflow.v1.IPostResetOperation[]|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);
                }

                /** Represents a ResetWorkflowExecutionRequest. */
                class ResetWorkflowExecutionRequest implements IResetWorkflowExecutionRequest {

                    /**
                     * Constructs a new ResetWorkflowExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IResetWorkflowExecutionRequest);

                    /** ResetWorkflowExecutionRequest namespace. */
                    public namespace: string;

                    /**
                     * The workflow to reset. If this contains a run ID then the workflow will be reset back to the
                     * provided event ID in that run. Otherwise it will be reset to the provided event ID in the
                     * current run. In all cases the current run will be terminated and a new run started.
                     */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ResetWorkflowExecutionRequest reason. */
                    public reason: string;

                    /**
                     * The id of a `WORKFLOW_TASK_COMPLETED`,`WORKFLOW_TASK_TIMED_OUT`, `WORKFLOW_TASK_FAILED`, or
                     * `WORKFLOW_TASK_STARTED` event to reset to.
                     */
                    public workflowTaskFinishEventId: Long;

                    /** Used to de-dupe reset requests */
                    public requestId: string;

                    /**
                     * Deprecated. Use `options`.
                     * Default: RESET_REAPPLY_TYPE_SIGNAL
                     */
                    public resetReapplyType: temporal.api.enums.v1.ResetReapplyType;

                    /** Event types not to be reapplied */
                    public resetReapplyExcludeTypes: temporal.api.enums.v1.ResetReapplyExcludeType[];

                    /**
                     * Operations to perform after the workflow has been reset. These operations will be applied
                     * to the *new* run of the workflow execution in the order they are provided.
                     * All operations are applied to the workflow before the first new workflow task is generated
                     */
                    public postResetOperations: temporal.api.workflow.v1.IPostResetOperation[];

                    /** The identity of the worker/client */
                    public identity: string;

                    /**
                     * Creates a new ResetWorkflowExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResetWorkflowExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IResetWorkflowExecutionRequest): temporal.api.workflowservice.v1.ResetWorkflowExecutionRequest;

                    /**
                     * Encodes the specified ResetWorkflowExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ResetWorkflowExecutionRequest.verify|verify} messages.
                     * @param message ResetWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IResetWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResetWorkflowExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ResetWorkflowExecutionRequest.verify|verify} messages.
                     * @param message ResetWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IResetWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResetWorkflowExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResetWorkflowExecutionRequest
                     * @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): temporal.api.workflowservice.v1.ResetWorkflowExecutionRequest;

                    /**
                     * Decodes a ResetWorkflowExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResetWorkflowExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.ResetWorkflowExecutionRequest;

                    /**
                     * Creates a ResetWorkflowExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResetWorkflowExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ResetWorkflowExecutionRequest;

                    /**
                     * Creates a plain object from a ResetWorkflowExecutionRequest message. Also converts values to other types if specified.
                     * @param message ResetWorkflowExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ResetWorkflowExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResetWorkflowExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResetWorkflowExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResetWorkflowExecutionResponse. */
                interface IResetWorkflowExecutionResponse {

                    /** ResetWorkflowExecutionResponse runId */
                    runId?: (string|null);
                }

                /** Represents a ResetWorkflowExecutionResponse. */
                class ResetWorkflowExecutionResponse implements IResetWorkflowExecutionResponse {

                    /**
                     * Constructs a new ResetWorkflowExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IResetWorkflowExecutionResponse);

                    /** ResetWorkflowExecutionResponse runId. */
                    public runId: string;

                    /**
                     * Creates a new ResetWorkflowExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResetWorkflowExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IResetWorkflowExecutionResponse): temporal.api.workflowservice.v1.ResetWorkflowExecutionResponse;

                    /**
                     * Encodes the specified ResetWorkflowExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ResetWorkflowExecutionResponse.verify|verify} messages.
                     * @param message ResetWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IResetWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResetWorkflowExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ResetWorkflowExecutionResponse.verify|verify} messages.
                     * @param message ResetWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IResetWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResetWorkflowExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResetWorkflowExecutionResponse
                     * @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): temporal.api.workflowservice.v1.ResetWorkflowExecutionResponse;

                    /**
                     * Decodes a ResetWorkflowExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResetWorkflowExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.ResetWorkflowExecutionResponse;

                    /**
                     * Creates a ResetWorkflowExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResetWorkflowExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ResetWorkflowExecutionResponse;

                    /**
                     * Creates a plain object from a ResetWorkflowExecutionResponse message. Also converts values to other types if specified.
                     * @param message ResetWorkflowExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ResetWorkflowExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResetWorkflowExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResetWorkflowExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TerminateWorkflowExecutionRequest. */
                interface ITerminateWorkflowExecutionRequest {

                    /** TerminateWorkflowExecutionRequest namespace */
                    namespace?: (string|null);

                    /** TerminateWorkflowExecutionRequest workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** TerminateWorkflowExecutionRequest reason */
                    reason?: (string|null);

                    /** Serialized additional information to attach to the termination event */
                    details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);

                    /**
                     * If set, this call will error if the most recent (if no run id is set on
                     * `workflow_execution`), or specified (if it is) workflow execution is not part of the same
                     * execution chain as this id.
                     */
                    firstExecutionRunId?: (string|null);

                    /** Links to be associated with the WorkflowExecutionTerminated event. */
                    links?: (temporal.api.common.v1.ILink[]|null);
                }

                /** Represents a TerminateWorkflowExecutionRequest. */
                class TerminateWorkflowExecutionRequest implements ITerminateWorkflowExecutionRequest {

                    /**
                     * Constructs a new TerminateWorkflowExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ITerminateWorkflowExecutionRequest);

                    /** TerminateWorkflowExecutionRequest namespace. */
                    public namespace: string;

                    /** TerminateWorkflowExecutionRequest workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** TerminateWorkflowExecutionRequest reason. */
                    public reason: string;

                    /** Serialized additional information to attach to the termination event */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /**
                     * If set, this call will error if the most recent (if no run id is set on
                     * `workflow_execution`), or specified (if it is) workflow execution is not part of the same
                     * execution chain as this id.
                     */
                    public firstExecutionRunId: string;

                    /** Links to be associated with the WorkflowExecutionTerminated event. */
                    public links: temporal.api.common.v1.ILink[];

                    /**
                     * Creates a new TerminateWorkflowExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TerminateWorkflowExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ITerminateWorkflowExecutionRequest): temporal.api.workflowservice.v1.TerminateWorkflowExecutionRequest;

                    /**
                     * Encodes the specified TerminateWorkflowExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.TerminateWorkflowExecutionRequest.verify|verify} messages.
                     * @param message TerminateWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ITerminateWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TerminateWorkflowExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.TerminateWorkflowExecutionRequest.verify|verify} messages.
                     * @param message TerminateWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ITerminateWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TerminateWorkflowExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TerminateWorkflowExecutionRequest
                     * @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): temporal.api.workflowservice.v1.TerminateWorkflowExecutionRequest;

                    /**
                     * Decodes a TerminateWorkflowExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TerminateWorkflowExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.TerminateWorkflowExecutionRequest;

                    /**
                     * Creates a TerminateWorkflowExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TerminateWorkflowExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.TerminateWorkflowExecutionRequest;

                    /**
                     * Creates a plain object from a TerminateWorkflowExecutionRequest message. Also converts values to other types if specified.
                     * @param message TerminateWorkflowExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.TerminateWorkflowExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TerminateWorkflowExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TerminateWorkflowExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TerminateWorkflowExecutionResponse. */
                interface ITerminateWorkflowExecutionResponse {
                }

                /** Represents a TerminateWorkflowExecutionResponse. */
                class TerminateWorkflowExecutionResponse implements ITerminateWorkflowExecutionResponse {

                    /**
                     * Constructs a new TerminateWorkflowExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ITerminateWorkflowExecutionResponse);

                    /**
                     * Creates a new TerminateWorkflowExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TerminateWorkflowExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ITerminateWorkflowExecutionResponse): temporal.api.workflowservice.v1.TerminateWorkflowExecutionResponse;

                    /**
                     * Encodes the specified TerminateWorkflowExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.TerminateWorkflowExecutionResponse.verify|verify} messages.
                     * @param message TerminateWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ITerminateWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TerminateWorkflowExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.TerminateWorkflowExecutionResponse.verify|verify} messages.
                     * @param message TerminateWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ITerminateWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TerminateWorkflowExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TerminateWorkflowExecutionResponse
                     * @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): temporal.api.workflowservice.v1.TerminateWorkflowExecutionResponse;

                    /**
                     * Decodes a TerminateWorkflowExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TerminateWorkflowExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.TerminateWorkflowExecutionResponse;

                    /**
                     * Creates a TerminateWorkflowExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TerminateWorkflowExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.TerminateWorkflowExecutionResponse;

                    /**
                     * Creates a plain object from a TerminateWorkflowExecutionResponse message. Also converts values to other types if specified.
                     * @param message TerminateWorkflowExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.TerminateWorkflowExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TerminateWorkflowExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TerminateWorkflowExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteWorkflowExecutionRequest. */
                interface IDeleteWorkflowExecutionRequest {

                    /** DeleteWorkflowExecutionRequest namespace */
                    namespace?: (string|null);

                    /** Workflow Execution to delete. If run_id is not specified, the latest one is used. */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);
                }

                /** Represents a DeleteWorkflowExecutionRequest. */
                class DeleteWorkflowExecutionRequest implements IDeleteWorkflowExecutionRequest {

                    /**
                     * Constructs a new DeleteWorkflowExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteWorkflowExecutionRequest);

                    /** DeleteWorkflowExecutionRequest namespace. */
                    public namespace: string;

                    /** Workflow Execution to delete. If run_id is not specified, the latest one is used. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * Creates a new DeleteWorkflowExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteWorkflowExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteWorkflowExecutionRequest): temporal.api.workflowservice.v1.DeleteWorkflowExecutionRequest;

                    /**
                     * Encodes the specified DeleteWorkflowExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkflowExecutionRequest.verify|verify} messages.
                     * @param message DeleteWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteWorkflowExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkflowExecutionRequest.verify|verify} messages.
                     * @param message DeleteWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteWorkflowExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteWorkflowExecutionRequest
                     * @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): temporal.api.workflowservice.v1.DeleteWorkflowExecutionRequest;

                    /**
                     * Decodes a DeleteWorkflowExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteWorkflowExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.DeleteWorkflowExecutionRequest;

                    /**
                     * Creates a DeleteWorkflowExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteWorkflowExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteWorkflowExecutionRequest;

                    /**
                     * Creates a plain object from a DeleteWorkflowExecutionRequest message. Also converts values to other types if specified.
                     * @param message DeleteWorkflowExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteWorkflowExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteWorkflowExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteWorkflowExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteWorkflowExecutionResponse. */
                interface IDeleteWorkflowExecutionResponse {
                }

                /** Represents a DeleteWorkflowExecutionResponse. */
                class DeleteWorkflowExecutionResponse implements IDeleteWorkflowExecutionResponse {

                    /**
                     * Constructs a new DeleteWorkflowExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteWorkflowExecutionResponse);

                    /**
                     * Creates a new DeleteWorkflowExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteWorkflowExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteWorkflowExecutionResponse): temporal.api.workflowservice.v1.DeleteWorkflowExecutionResponse;

                    /**
                     * Encodes the specified DeleteWorkflowExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkflowExecutionResponse.verify|verify} messages.
                     * @param message DeleteWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteWorkflowExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkflowExecutionResponse.verify|verify} messages.
                     * @param message DeleteWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteWorkflowExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteWorkflowExecutionResponse
                     * @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): temporal.api.workflowservice.v1.DeleteWorkflowExecutionResponse;

                    /**
                     * Decodes a DeleteWorkflowExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteWorkflowExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.DeleteWorkflowExecutionResponse;

                    /**
                     * Creates a DeleteWorkflowExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteWorkflowExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteWorkflowExecutionResponse;

                    /**
                     * Creates a plain object from a DeleteWorkflowExecutionResponse message. Also converts values to other types if specified.
                     * @param message DeleteWorkflowExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteWorkflowExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteWorkflowExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteWorkflowExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListOpenWorkflowExecutionsRequest. */
                interface IListOpenWorkflowExecutionsRequest {

                    /** ListOpenWorkflowExecutionsRequest namespace */
                    namespace?: (string|null);

                    /** ListOpenWorkflowExecutionsRequest maximumPageSize */
                    maximumPageSize?: (number|null);

                    /** ListOpenWorkflowExecutionsRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);

                    /** ListOpenWorkflowExecutionsRequest startTimeFilter */
                    startTimeFilter?: (temporal.api.filter.v1.IStartTimeFilter|null);

                    /** ListOpenWorkflowExecutionsRequest executionFilter */
                    executionFilter?: (temporal.api.filter.v1.IWorkflowExecutionFilter|null);

                    /** ListOpenWorkflowExecutionsRequest typeFilter */
                    typeFilter?: (temporal.api.filter.v1.IWorkflowTypeFilter|null);
                }

                /** Represents a ListOpenWorkflowExecutionsRequest. */
                class ListOpenWorkflowExecutionsRequest implements IListOpenWorkflowExecutionsRequest {

                    /**
                     * Constructs a new ListOpenWorkflowExecutionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListOpenWorkflowExecutionsRequest);

                    /** ListOpenWorkflowExecutionsRequest namespace. */
                    public namespace: string;

                    /** ListOpenWorkflowExecutionsRequest maximumPageSize. */
                    public maximumPageSize: number;

                    /** ListOpenWorkflowExecutionsRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /** ListOpenWorkflowExecutionsRequest startTimeFilter. */
                    public startTimeFilter?: (temporal.api.filter.v1.IStartTimeFilter|null);

                    /** ListOpenWorkflowExecutionsRequest executionFilter. */
                    public executionFilter?: (temporal.api.filter.v1.IWorkflowExecutionFilter|null);

                    /** ListOpenWorkflowExecutionsRequest typeFilter. */
                    public typeFilter?: (temporal.api.filter.v1.IWorkflowTypeFilter|null);

                    /** ListOpenWorkflowExecutionsRequest filters. */
                    public filters?: ("executionFilter"|"typeFilter");

                    /**
                     * Creates a new ListOpenWorkflowExecutionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListOpenWorkflowExecutionsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListOpenWorkflowExecutionsRequest): temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsRequest;

                    /**
                     * Encodes the specified ListOpenWorkflowExecutionsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message ListOpenWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListOpenWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListOpenWorkflowExecutionsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message ListOpenWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListOpenWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListOpenWorkflowExecutionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListOpenWorkflowExecutionsRequest
                     * @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): temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsRequest;

                    /**
                     * Decodes a ListOpenWorkflowExecutionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListOpenWorkflowExecutionsRequest
                     * @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)): temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsRequest;

                    /**
                     * Creates a ListOpenWorkflowExecutionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListOpenWorkflowExecutionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsRequest;

                    /**
                     * Creates a plain object from a ListOpenWorkflowExecutionsRequest message. Also converts values to other types if specified.
                     * @param message ListOpenWorkflowExecutionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListOpenWorkflowExecutionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListOpenWorkflowExecutionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListOpenWorkflowExecutionsResponse. */
                interface IListOpenWorkflowExecutionsResponse {

                    /** ListOpenWorkflowExecutionsResponse executions */
                    executions?: (temporal.api.workflow.v1.IWorkflowExecutionInfo[]|null);

                    /** ListOpenWorkflowExecutionsResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListOpenWorkflowExecutionsResponse. */
                class ListOpenWorkflowExecutionsResponse implements IListOpenWorkflowExecutionsResponse {

                    /**
                     * Constructs a new ListOpenWorkflowExecutionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListOpenWorkflowExecutionsResponse);

                    /** ListOpenWorkflowExecutionsResponse executions. */
                    public executions: temporal.api.workflow.v1.IWorkflowExecutionInfo[];

                    /** ListOpenWorkflowExecutionsResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListOpenWorkflowExecutionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListOpenWorkflowExecutionsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListOpenWorkflowExecutionsResponse): temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsResponse;

                    /**
                     * Encodes the specified ListOpenWorkflowExecutionsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message ListOpenWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListOpenWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListOpenWorkflowExecutionsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message ListOpenWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListOpenWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListOpenWorkflowExecutionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListOpenWorkflowExecutionsResponse
                     * @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): temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsResponse;

                    /**
                     * Decodes a ListOpenWorkflowExecutionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListOpenWorkflowExecutionsResponse
                     * @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)): temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsResponse;

                    /**
                     * Creates a ListOpenWorkflowExecutionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListOpenWorkflowExecutionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsResponse;

                    /**
                     * Creates a plain object from a ListOpenWorkflowExecutionsResponse message. Also converts values to other types if specified.
                     * @param message ListOpenWorkflowExecutionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListOpenWorkflowExecutionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListOpenWorkflowExecutionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListClosedWorkflowExecutionsRequest. */
                interface IListClosedWorkflowExecutionsRequest {

                    /** ListClosedWorkflowExecutionsRequest namespace */
                    namespace?: (string|null);

                    /** ListClosedWorkflowExecutionsRequest maximumPageSize */
                    maximumPageSize?: (number|null);

                    /** ListClosedWorkflowExecutionsRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);

                    /** ListClosedWorkflowExecutionsRequest startTimeFilter */
                    startTimeFilter?: (temporal.api.filter.v1.IStartTimeFilter|null);

                    /** ListClosedWorkflowExecutionsRequest executionFilter */
                    executionFilter?: (temporal.api.filter.v1.IWorkflowExecutionFilter|null);

                    /** ListClosedWorkflowExecutionsRequest typeFilter */
                    typeFilter?: (temporal.api.filter.v1.IWorkflowTypeFilter|null);

                    /** ListClosedWorkflowExecutionsRequest statusFilter */
                    statusFilter?: (temporal.api.filter.v1.IStatusFilter|null);
                }

                /** Represents a ListClosedWorkflowExecutionsRequest. */
                class ListClosedWorkflowExecutionsRequest implements IListClosedWorkflowExecutionsRequest {

                    /**
                     * Constructs a new ListClosedWorkflowExecutionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListClosedWorkflowExecutionsRequest);

                    /** ListClosedWorkflowExecutionsRequest namespace. */
                    public namespace: string;

                    /** ListClosedWorkflowExecutionsRequest maximumPageSize. */
                    public maximumPageSize: number;

                    /** ListClosedWorkflowExecutionsRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /** ListClosedWorkflowExecutionsRequest startTimeFilter. */
                    public startTimeFilter?: (temporal.api.filter.v1.IStartTimeFilter|null);

                    /** ListClosedWorkflowExecutionsRequest executionFilter. */
                    public executionFilter?: (temporal.api.filter.v1.IWorkflowExecutionFilter|null);

                    /** ListClosedWorkflowExecutionsRequest typeFilter. */
                    public typeFilter?: (temporal.api.filter.v1.IWorkflowTypeFilter|null);

                    /** ListClosedWorkflowExecutionsRequest statusFilter. */
                    public statusFilter?: (temporal.api.filter.v1.IStatusFilter|null);

                    /** ListClosedWorkflowExecutionsRequest filters. */
                    public filters?: ("executionFilter"|"typeFilter"|"statusFilter");

                    /**
                     * Creates a new ListClosedWorkflowExecutionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListClosedWorkflowExecutionsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListClosedWorkflowExecutionsRequest): temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsRequest;

                    /**
                     * Encodes the specified ListClosedWorkflowExecutionsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message ListClosedWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListClosedWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListClosedWorkflowExecutionsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message ListClosedWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListClosedWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListClosedWorkflowExecutionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListClosedWorkflowExecutionsRequest
                     * @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): temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsRequest;

                    /**
                     * Decodes a ListClosedWorkflowExecutionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListClosedWorkflowExecutionsRequest
                     * @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)): temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsRequest;

                    /**
                     * Creates a ListClosedWorkflowExecutionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListClosedWorkflowExecutionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsRequest;

                    /**
                     * Creates a plain object from a ListClosedWorkflowExecutionsRequest message. Also converts values to other types if specified.
                     * @param message ListClosedWorkflowExecutionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListClosedWorkflowExecutionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListClosedWorkflowExecutionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListClosedWorkflowExecutionsResponse. */
                interface IListClosedWorkflowExecutionsResponse {

                    /** ListClosedWorkflowExecutionsResponse executions */
                    executions?: (temporal.api.workflow.v1.IWorkflowExecutionInfo[]|null);

                    /** ListClosedWorkflowExecutionsResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListClosedWorkflowExecutionsResponse. */
                class ListClosedWorkflowExecutionsResponse implements IListClosedWorkflowExecutionsResponse {

                    /**
                     * Constructs a new ListClosedWorkflowExecutionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListClosedWorkflowExecutionsResponse);

                    /** ListClosedWorkflowExecutionsResponse executions. */
                    public executions: temporal.api.workflow.v1.IWorkflowExecutionInfo[];

                    /** ListClosedWorkflowExecutionsResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListClosedWorkflowExecutionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListClosedWorkflowExecutionsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListClosedWorkflowExecutionsResponse): temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsResponse;

                    /**
                     * Encodes the specified ListClosedWorkflowExecutionsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message ListClosedWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListClosedWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListClosedWorkflowExecutionsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message ListClosedWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListClosedWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListClosedWorkflowExecutionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListClosedWorkflowExecutionsResponse
                     * @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): temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsResponse;

                    /**
                     * Decodes a ListClosedWorkflowExecutionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListClosedWorkflowExecutionsResponse
                     * @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)): temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsResponse;

                    /**
                     * Creates a ListClosedWorkflowExecutionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListClosedWorkflowExecutionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsResponse;

                    /**
                     * Creates a plain object from a ListClosedWorkflowExecutionsResponse message. Also converts values to other types if specified.
                     * @param message ListClosedWorkflowExecutionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListClosedWorkflowExecutionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListClosedWorkflowExecutionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListWorkflowExecutionsRequest. */
                interface IListWorkflowExecutionsRequest {

                    /** ListWorkflowExecutionsRequest namespace */
                    namespace?: (string|null);

                    /** ListWorkflowExecutionsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListWorkflowExecutionsRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);

                    /** ListWorkflowExecutionsRequest query */
                    query?: (string|null);
                }

                /** Represents a ListWorkflowExecutionsRequest. */
                class ListWorkflowExecutionsRequest implements IListWorkflowExecutionsRequest {

                    /**
                     * Constructs a new ListWorkflowExecutionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListWorkflowExecutionsRequest);

                    /** ListWorkflowExecutionsRequest namespace. */
                    public namespace: string;

                    /** ListWorkflowExecutionsRequest pageSize. */
                    public pageSize: number;

                    /** ListWorkflowExecutionsRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /** ListWorkflowExecutionsRequest query. */
                    public query: string;

                    /**
                     * Creates a new ListWorkflowExecutionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListWorkflowExecutionsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListWorkflowExecutionsRequest): temporal.api.workflowservice.v1.ListWorkflowExecutionsRequest;

                    /**
                     * Encodes the specified ListWorkflowExecutionsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message ListWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListWorkflowExecutionsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message ListWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListWorkflowExecutionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListWorkflowExecutionsRequest
                     * @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): temporal.api.workflowservice.v1.ListWorkflowExecutionsRequest;

                    /**
                     * Decodes a ListWorkflowExecutionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListWorkflowExecutionsRequest
                     * @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)): temporal.api.workflowservice.v1.ListWorkflowExecutionsRequest;

                    /**
                     * Creates a ListWorkflowExecutionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListWorkflowExecutionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListWorkflowExecutionsRequest;

                    /**
                     * Creates a plain object from a ListWorkflowExecutionsRequest message. Also converts values to other types if specified.
                     * @param message ListWorkflowExecutionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListWorkflowExecutionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListWorkflowExecutionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListWorkflowExecutionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListWorkflowExecutionsResponse. */
                interface IListWorkflowExecutionsResponse {

                    /** ListWorkflowExecutionsResponse executions */
                    executions?: (temporal.api.workflow.v1.IWorkflowExecutionInfo[]|null);

                    /** ListWorkflowExecutionsResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListWorkflowExecutionsResponse. */
                class ListWorkflowExecutionsResponse implements IListWorkflowExecutionsResponse {

                    /**
                     * Constructs a new ListWorkflowExecutionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListWorkflowExecutionsResponse);

                    /** ListWorkflowExecutionsResponse executions. */
                    public executions: temporal.api.workflow.v1.IWorkflowExecutionInfo[];

                    /** ListWorkflowExecutionsResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListWorkflowExecutionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListWorkflowExecutionsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListWorkflowExecutionsResponse): temporal.api.workflowservice.v1.ListWorkflowExecutionsResponse;

                    /**
                     * Encodes the specified ListWorkflowExecutionsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message ListWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListWorkflowExecutionsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message ListWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListWorkflowExecutionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListWorkflowExecutionsResponse
                     * @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): temporal.api.workflowservice.v1.ListWorkflowExecutionsResponse;

                    /**
                     * Decodes a ListWorkflowExecutionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListWorkflowExecutionsResponse
                     * @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)): temporal.api.workflowservice.v1.ListWorkflowExecutionsResponse;

                    /**
                     * Creates a ListWorkflowExecutionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListWorkflowExecutionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListWorkflowExecutionsResponse;

                    /**
                     * Creates a plain object from a ListWorkflowExecutionsResponse message. Also converts values to other types if specified.
                     * @param message ListWorkflowExecutionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListWorkflowExecutionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListWorkflowExecutionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListWorkflowExecutionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListArchivedWorkflowExecutionsRequest. */
                interface IListArchivedWorkflowExecutionsRequest {

                    /** ListArchivedWorkflowExecutionsRequest namespace */
                    namespace?: (string|null);

                    /** ListArchivedWorkflowExecutionsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListArchivedWorkflowExecutionsRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);

                    /** ListArchivedWorkflowExecutionsRequest query */
                    query?: (string|null);
                }

                /** Represents a ListArchivedWorkflowExecutionsRequest. */
                class ListArchivedWorkflowExecutionsRequest implements IListArchivedWorkflowExecutionsRequest {

                    /**
                     * Constructs a new ListArchivedWorkflowExecutionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListArchivedWorkflowExecutionsRequest);

                    /** ListArchivedWorkflowExecutionsRequest namespace. */
                    public namespace: string;

                    /** ListArchivedWorkflowExecutionsRequest pageSize. */
                    public pageSize: number;

                    /** ListArchivedWorkflowExecutionsRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /** ListArchivedWorkflowExecutionsRequest query. */
                    public query: string;

                    /**
                     * Creates a new ListArchivedWorkflowExecutionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListArchivedWorkflowExecutionsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListArchivedWorkflowExecutionsRequest): temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsRequest;

                    /**
                     * Encodes the specified ListArchivedWorkflowExecutionsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message ListArchivedWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListArchivedWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListArchivedWorkflowExecutionsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message ListArchivedWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListArchivedWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListArchivedWorkflowExecutionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListArchivedWorkflowExecutionsRequest
                     * @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): temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsRequest;

                    /**
                     * Decodes a ListArchivedWorkflowExecutionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListArchivedWorkflowExecutionsRequest
                     * @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)): temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsRequest;

                    /**
                     * Creates a ListArchivedWorkflowExecutionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListArchivedWorkflowExecutionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsRequest;

                    /**
                     * Creates a plain object from a ListArchivedWorkflowExecutionsRequest message. Also converts values to other types if specified.
                     * @param message ListArchivedWorkflowExecutionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListArchivedWorkflowExecutionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListArchivedWorkflowExecutionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListArchivedWorkflowExecutionsResponse. */
                interface IListArchivedWorkflowExecutionsResponse {

                    /** ListArchivedWorkflowExecutionsResponse executions */
                    executions?: (temporal.api.workflow.v1.IWorkflowExecutionInfo[]|null);

                    /** ListArchivedWorkflowExecutionsResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListArchivedWorkflowExecutionsResponse. */
                class ListArchivedWorkflowExecutionsResponse implements IListArchivedWorkflowExecutionsResponse {

                    /**
                     * Constructs a new ListArchivedWorkflowExecutionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListArchivedWorkflowExecutionsResponse);

                    /** ListArchivedWorkflowExecutionsResponse executions. */
                    public executions: temporal.api.workflow.v1.IWorkflowExecutionInfo[];

                    /** ListArchivedWorkflowExecutionsResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListArchivedWorkflowExecutionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListArchivedWorkflowExecutionsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListArchivedWorkflowExecutionsResponse): temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsResponse;

                    /**
                     * Encodes the specified ListArchivedWorkflowExecutionsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message ListArchivedWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListArchivedWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListArchivedWorkflowExecutionsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message ListArchivedWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListArchivedWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListArchivedWorkflowExecutionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListArchivedWorkflowExecutionsResponse
                     * @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): temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsResponse;

                    /**
                     * Decodes a ListArchivedWorkflowExecutionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListArchivedWorkflowExecutionsResponse
                     * @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)): temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsResponse;

                    /**
                     * Creates a ListArchivedWorkflowExecutionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListArchivedWorkflowExecutionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsResponse;

                    /**
                     * Creates a plain object from a ListArchivedWorkflowExecutionsResponse message. Also converts values to other types if specified.
                     * @param message ListArchivedWorkflowExecutionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListArchivedWorkflowExecutionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListArchivedWorkflowExecutionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ScanWorkflowExecutionsRequest. */
                interface IScanWorkflowExecutionsRequest {

                    /** ScanWorkflowExecutionsRequest namespace */
                    namespace?: (string|null);

                    /** ScanWorkflowExecutionsRequest pageSize */
                    pageSize?: (number|null);

                    /** ScanWorkflowExecutionsRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);

                    /** ScanWorkflowExecutionsRequest query */
                    query?: (string|null);
                }

                /** Deprecated: Use with `ListWorkflowExecutions`. */
                class ScanWorkflowExecutionsRequest implements IScanWorkflowExecutionsRequest {

                    /**
                     * Constructs a new ScanWorkflowExecutionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IScanWorkflowExecutionsRequest);

                    /** ScanWorkflowExecutionsRequest namespace. */
                    public namespace: string;

                    /** ScanWorkflowExecutionsRequest pageSize. */
                    public pageSize: number;

                    /** ScanWorkflowExecutionsRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /** ScanWorkflowExecutionsRequest query. */
                    public query: string;

                    /**
                     * Creates a new ScanWorkflowExecutionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ScanWorkflowExecutionsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IScanWorkflowExecutionsRequest): temporal.api.workflowservice.v1.ScanWorkflowExecutionsRequest;

                    /**
                     * Encodes the specified ScanWorkflowExecutionsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ScanWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message ScanWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IScanWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ScanWorkflowExecutionsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ScanWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message ScanWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IScanWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ScanWorkflowExecutionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ScanWorkflowExecutionsRequest
                     * @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): temporal.api.workflowservice.v1.ScanWorkflowExecutionsRequest;

                    /**
                     * Decodes a ScanWorkflowExecutionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ScanWorkflowExecutionsRequest
                     * @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)): temporal.api.workflowservice.v1.ScanWorkflowExecutionsRequest;

                    /**
                     * Creates a ScanWorkflowExecutionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ScanWorkflowExecutionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ScanWorkflowExecutionsRequest;

                    /**
                     * Creates a plain object from a ScanWorkflowExecutionsRequest message. Also converts values to other types if specified.
                     * @param message ScanWorkflowExecutionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ScanWorkflowExecutionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ScanWorkflowExecutionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ScanWorkflowExecutionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ScanWorkflowExecutionsResponse. */
                interface IScanWorkflowExecutionsResponse {

                    /** ScanWorkflowExecutionsResponse executions */
                    executions?: (temporal.api.workflow.v1.IWorkflowExecutionInfo[]|null);

                    /** ScanWorkflowExecutionsResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Deprecated: Use with `ListWorkflowExecutions`. */
                class ScanWorkflowExecutionsResponse implements IScanWorkflowExecutionsResponse {

                    /**
                     * Constructs a new ScanWorkflowExecutionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IScanWorkflowExecutionsResponse);

                    /** ScanWorkflowExecutionsResponse executions. */
                    public executions: temporal.api.workflow.v1.IWorkflowExecutionInfo[];

                    /** ScanWorkflowExecutionsResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ScanWorkflowExecutionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ScanWorkflowExecutionsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IScanWorkflowExecutionsResponse): temporal.api.workflowservice.v1.ScanWorkflowExecutionsResponse;

                    /**
                     * Encodes the specified ScanWorkflowExecutionsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ScanWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message ScanWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IScanWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ScanWorkflowExecutionsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ScanWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message ScanWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IScanWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ScanWorkflowExecutionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ScanWorkflowExecutionsResponse
                     * @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): temporal.api.workflowservice.v1.ScanWorkflowExecutionsResponse;

                    /**
                     * Decodes a ScanWorkflowExecutionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ScanWorkflowExecutionsResponse
                     * @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)): temporal.api.workflowservice.v1.ScanWorkflowExecutionsResponse;

                    /**
                     * Creates a ScanWorkflowExecutionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ScanWorkflowExecutionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ScanWorkflowExecutionsResponse;

                    /**
                     * Creates a plain object from a ScanWorkflowExecutionsResponse message. Also converts values to other types if specified.
                     * @param message ScanWorkflowExecutionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ScanWorkflowExecutionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ScanWorkflowExecutionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ScanWorkflowExecutionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CountWorkflowExecutionsRequest. */
                interface ICountWorkflowExecutionsRequest {

                    /** CountWorkflowExecutionsRequest namespace */
                    namespace?: (string|null);

                    /** CountWorkflowExecutionsRequest query */
                    query?: (string|null);
                }

                /** Represents a CountWorkflowExecutionsRequest. */
                class CountWorkflowExecutionsRequest implements ICountWorkflowExecutionsRequest {

                    /**
                     * Constructs a new CountWorkflowExecutionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ICountWorkflowExecutionsRequest);

                    /** CountWorkflowExecutionsRequest namespace. */
                    public namespace: string;

                    /** CountWorkflowExecutionsRequest query. */
                    public query: string;

                    /**
                     * Creates a new CountWorkflowExecutionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CountWorkflowExecutionsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ICountWorkflowExecutionsRequest): temporal.api.workflowservice.v1.CountWorkflowExecutionsRequest;

                    /**
                     * Encodes the specified CountWorkflowExecutionsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.CountWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message CountWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ICountWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CountWorkflowExecutionsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CountWorkflowExecutionsRequest.verify|verify} messages.
                     * @param message CountWorkflowExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ICountWorkflowExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CountWorkflowExecutionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CountWorkflowExecutionsRequest
                     * @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): temporal.api.workflowservice.v1.CountWorkflowExecutionsRequest;

                    /**
                     * Decodes a CountWorkflowExecutionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CountWorkflowExecutionsRequest
                     * @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)): temporal.api.workflowservice.v1.CountWorkflowExecutionsRequest;

                    /**
                     * Creates a CountWorkflowExecutionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CountWorkflowExecutionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CountWorkflowExecutionsRequest;

                    /**
                     * Creates a plain object from a CountWorkflowExecutionsRequest message. Also converts values to other types if specified.
                     * @param message CountWorkflowExecutionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.CountWorkflowExecutionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CountWorkflowExecutionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CountWorkflowExecutionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CountWorkflowExecutionsResponse. */
                interface ICountWorkflowExecutionsResponse {

                    /**
                     * If `query` is not grouping by any field, the count is an approximate number
                     * of workflows that matches the query.
                     * If `query` is grouping by a field, the count is simply the sum of the counts
                     * of the groups returned in the response. This number can be smaller than the
                     * total number of workflows matching the query.
                     */
                    count?: (Long|null);

                    /**
                     * `groups` contains the groups if the request is grouping by a field.
                     * The list might not be complete, and the counts of each group is approximate.
                     */
                    groups?: (temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.IAggregationGroup[]|null);
                }

                /** Represents a CountWorkflowExecutionsResponse. */
                class CountWorkflowExecutionsResponse implements ICountWorkflowExecutionsResponse {

                    /**
                     * Constructs a new CountWorkflowExecutionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ICountWorkflowExecutionsResponse);

                    /**
                     * If `query` is not grouping by any field, the count is an approximate number
                     * of workflows that matches the query.
                     * If `query` is grouping by a field, the count is simply the sum of the counts
                     * of the groups returned in the response. This number can be smaller than the
                     * total number of workflows matching the query.
                     */
                    public count: Long;

                    /**
                     * `groups` contains the groups if the request is grouping by a field.
                     * The list might not be complete, and the counts of each group is approximate.
                     */
                    public groups: temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.IAggregationGroup[];

                    /**
                     * Creates a new CountWorkflowExecutionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CountWorkflowExecutionsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ICountWorkflowExecutionsResponse): temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse;

                    /**
                     * Encodes the specified CountWorkflowExecutionsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message CountWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ICountWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CountWorkflowExecutionsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.verify|verify} messages.
                     * @param message CountWorkflowExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ICountWorkflowExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CountWorkflowExecutionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CountWorkflowExecutionsResponse
                     * @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): temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse;

                    /**
                     * Decodes a CountWorkflowExecutionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CountWorkflowExecutionsResponse
                     * @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)): temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse;

                    /**
                     * Creates a CountWorkflowExecutionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CountWorkflowExecutionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse;

                    /**
                     * Creates a plain object from a CountWorkflowExecutionsResponse message. Also converts values to other types if specified.
                     * @param message CountWorkflowExecutionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CountWorkflowExecutionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CountWorkflowExecutionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace CountWorkflowExecutionsResponse {

                    /** Properties of an AggregationGroup. */
                    interface IAggregationGroup {

                        /** AggregationGroup groupValues */
                        groupValues?: (temporal.api.common.v1.IPayload[]|null);

                        /** AggregationGroup count */
                        count?: (Long|null);
                    }

                    /** Represents an AggregationGroup. */
                    class AggregationGroup implements IAggregationGroup {

                        /**
                         * Constructs a new AggregationGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.IAggregationGroup);

                        /** AggregationGroup groupValues. */
                        public groupValues: temporal.api.common.v1.IPayload[];

                        /** AggregationGroup count. */
                        public count: Long;

                        /**
                         * Creates a new AggregationGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AggregationGroup instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.IAggregationGroup): temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.AggregationGroup;

                        /**
                         * Encodes the specified AggregationGroup message. Does not implicitly {@link temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.AggregationGroup.verify|verify} messages.
                         * @param message AggregationGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.IAggregationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AggregationGroup message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.AggregationGroup.verify|verify} messages.
                         * @param message AggregationGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.IAggregationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AggregationGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AggregationGroup
                         * @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): temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.AggregationGroup;

                        /**
                         * Decodes an AggregationGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AggregationGroup
                         * @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)): temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.AggregationGroup;

                        /**
                         * Creates an AggregationGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AggregationGroup
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.AggregationGroup;

                        /**
                         * Creates a plain object from an AggregationGroup message. Also converts values to other types if specified.
                         * @param message AggregationGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse.AggregationGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AggregationGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AggregationGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a GetSearchAttributesRequest. */
                interface IGetSearchAttributesRequest {
                }

                /** Represents a GetSearchAttributesRequest. */
                class GetSearchAttributesRequest implements IGetSearchAttributesRequest {

                    /**
                     * Constructs a new GetSearchAttributesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetSearchAttributesRequest);

                    /**
                     * Creates a new GetSearchAttributesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetSearchAttributesRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetSearchAttributesRequest): temporal.api.workflowservice.v1.GetSearchAttributesRequest;

                    /**
                     * Encodes the specified GetSearchAttributesRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.GetSearchAttributesRequest.verify|verify} messages.
                     * @param message GetSearchAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetSearchAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetSearchAttributesRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetSearchAttributesRequest.verify|verify} messages.
                     * @param message GetSearchAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetSearchAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetSearchAttributesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetSearchAttributesRequest
                     * @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): temporal.api.workflowservice.v1.GetSearchAttributesRequest;

                    /**
                     * Decodes a GetSearchAttributesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetSearchAttributesRequest
                     * @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)): temporal.api.workflowservice.v1.GetSearchAttributesRequest;

                    /**
                     * Creates a GetSearchAttributesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetSearchAttributesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetSearchAttributesRequest;

                    /**
                     * Creates a plain object from a GetSearchAttributesRequest message. Also converts values to other types if specified.
                     * @param message GetSearchAttributesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetSearchAttributesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetSearchAttributesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetSearchAttributesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetSearchAttributesResponse. */
                interface IGetSearchAttributesResponse {

                    /** GetSearchAttributesResponse keys */
                    keys?: ({ [k: string]: temporal.api.enums.v1.IndexedValueType }|null);
                }

                /** Represents a GetSearchAttributesResponse. */
                class GetSearchAttributesResponse implements IGetSearchAttributesResponse {

                    /**
                     * Constructs a new GetSearchAttributesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetSearchAttributesResponse);

                    /** GetSearchAttributesResponse keys. */
                    public keys: { [k: string]: temporal.api.enums.v1.IndexedValueType };

                    /**
                     * Creates a new GetSearchAttributesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetSearchAttributesResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetSearchAttributesResponse): temporal.api.workflowservice.v1.GetSearchAttributesResponse;

                    /**
                     * Encodes the specified GetSearchAttributesResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.GetSearchAttributesResponse.verify|verify} messages.
                     * @param message GetSearchAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetSearchAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetSearchAttributesResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetSearchAttributesResponse.verify|verify} messages.
                     * @param message GetSearchAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetSearchAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetSearchAttributesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetSearchAttributesResponse
                     * @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): temporal.api.workflowservice.v1.GetSearchAttributesResponse;

                    /**
                     * Decodes a GetSearchAttributesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetSearchAttributesResponse
                     * @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)): temporal.api.workflowservice.v1.GetSearchAttributesResponse;

                    /**
                     * Creates a GetSearchAttributesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetSearchAttributesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetSearchAttributesResponse;

                    /**
                     * Creates a plain object from a GetSearchAttributesResponse message. Also converts values to other types if specified.
                     * @param message GetSearchAttributesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetSearchAttributesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetSearchAttributesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetSearchAttributesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondQueryTaskCompletedRequest. */
                interface IRespondQueryTaskCompletedRequest {

                    /** RespondQueryTaskCompletedRequest taskToken */
                    taskToken?: (Uint8Array|null);

                    /** RespondQueryTaskCompletedRequest completedType */
                    completedType?: (temporal.api.enums.v1.QueryResultType|null);

                    /**
                     * The result of the query.
                     * Mutually exclusive with `error_message` and `failure`. Set when the query succeeds.
                     */
                    queryResult?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * A plain error message that must be set if completed_type is QUERY_RESULT_TYPE_FAILED.
                     * SDKs should also fill in the more complete `failure` field to provide the full context and
                     * support encryption of failure information.
                     * `error_message` will be duplicated if the `failure` field is present to support callers
                     * that pre-date the addition of that field, regardless of whether or not a custom failure
                     * converter is used.
                     * Mutually exclusive with `query_result`. Set when the query fails.
                     */
                    errorMessage?: (string|null);

                    /** RespondQueryTaskCompletedRequest namespace */
                    namespace?: (string|null);

                    /**
                     * The full reason for this query failure. This field is newer than `error_message` and can be
                     * encoded by the SDK's failure converter to support E2E encryption of messages and stack
                     * traces.
                     * Mutually exclusive with `query_result`. Set when the query fails.
                     */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Why did the task fail? It's important to note that many of the variants in this enum cannot
                     * apply to worker responses. See the type's doc for more.
                     */
                    cause?: (temporal.api.enums.v1.WorkflowTaskFailedCause|null);
                }

                /** Represents a RespondQueryTaskCompletedRequest. */
                class RespondQueryTaskCompletedRequest implements IRespondQueryTaskCompletedRequest {

                    /**
                     * Constructs a new RespondQueryTaskCompletedRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondQueryTaskCompletedRequest);

                    /** RespondQueryTaskCompletedRequest taskToken. */
                    public taskToken: Uint8Array;

                    /** RespondQueryTaskCompletedRequest completedType. */
                    public completedType: temporal.api.enums.v1.QueryResultType;

                    /**
                     * The result of the query.
                     * Mutually exclusive with `error_message` and `failure`. Set when the query succeeds.
                     */
                    public queryResult?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * A plain error message that must be set if completed_type is QUERY_RESULT_TYPE_FAILED.
                     * SDKs should also fill in the more complete `failure` field to provide the full context and
                     * support encryption of failure information.
                     * `error_message` will be duplicated if the `failure` field is present to support callers
                     * that pre-date the addition of that field, regardless of whether or not a custom failure
                     * converter is used.
                     * Mutually exclusive with `query_result`. Set when the query fails.
                     */
                    public errorMessage: string;

                    /** RespondQueryTaskCompletedRequest namespace. */
                    public namespace: string;

                    /**
                     * The full reason for this query failure. This field is newer than `error_message` and can be
                     * encoded by the SDK's failure converter to support E2E encryption of messages and stack
                     * traces.
                     * Mutually exclusive with `query_result`. Set when the query fails.
                     */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Why did the task fail? It's important to note that many of the variants in this enum cannot
                     * apply to worker responses. See the type's doc for more.
                     */
                    public cause: temporal.api.enums.v1.WorkflowTaskFailedCause;

                    /**
                     * Creates a new RespondQueryTaskCompletedRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondQueryTaskCompletedRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondQueryTaskCompletedRequest): temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest;

                    /**
                     * Encodes the specified RespondQueryTaskCompletedRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest.verify|verify} messages.
                     * @param message RespondQueryTaskCompletedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondQueryTaskCompletedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondQueryTaskCompletedRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest.verify|verify} messages.
                     * @param message RespondQueryTaskCompletedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondQueryTaskCompletedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondQueryTaskCompletedRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondQueryTaskCompletedRequest
                     * @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): temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest;

                    /**
                     * Decodes a RespondQueryTaskCompletedRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondQueryTaskCompletedRequest
                     * @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)): temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest;

                    /**
                     * Creates a RespondQueryTaskCompletedRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondQueryTaskCompletedRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest;

                    /**
                     * Creates a plain object from a RespondQueryTaskCompletedRequest message. Also converts values to other types if specified.
                     * @param message RespondQueryTaskCompletedRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondQueryTaskCompletedRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondQueryTaskCompletedRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondQueryTaskCompletedResponse. */
                interface IRespondQueryTaskCompletedResponse {
                }

                /** Represents a RespondQueryTaskCompletedResponse. */
                class RespondQueryTaskCompletedResponse implements IRespondQueryTaskCompletedResponse {

                    /**
                     * Constructs a new RespondQueryTaskCompletedResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondQueryTaskCompletedResponse);

                    /**
                     * Creates a new RespondQueryTaskCompletedResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondQueryTaskCompletedResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondQueryTaskCompletedResponse): temporal.api.workflowservice.v1.RespondQueryTaskCompletedResponse;

                    /**
                     * Encodes the specified RespondQueryTaskCompletedResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondQueryTaskCompletedResponse.verify|verify} messages.
                     * @param message RespondQueryTaskCompletedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondQueryTaskCompletedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondQueryTaskCompletedResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondQueryTaskCompletedResponse.verify|verify} messages.
                     * @param message RespondQueryTaskCompletedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondQueryTaskCompletedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondQueryTaskCompletedResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondQueryTaskCompletedResponse
                     * @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): temporal.api.workflowservice.v1.RespondQueryTaskCompletedResponse;

                    /**
                     * Decodes a RespondQueryTaskCompletedResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondQueryTaskCompletedResponse
                     * @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)): temporal.api.workflowservice.v1.RespondQueryTaskCompletedResponse;

                    /**
                     * Creates a RespondQueryTaskCompletedResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondQueryTaskCompletedResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondQueryTaskCompletedResponse;

                    /**
                     * Creates a plain object from a RespondQueryTaskCompletedResponse message. Also converts values to other types if specified.
                     * @param message RespondQueryTaskCompletedResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondQueryTaskCompletedResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondQueryTaskCompletedResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondQueryTaskCompletedResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResetStickyTaskQueueRequest. */
                interface IResetStickyTaskQueueRequest {

                    /** ResetStickyTaskQueueRequest namespace */
                    namespace?: (string|null);

                    /** ResetStickyTaskQueueRequest execution */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);
                }

                /** Represents a ResetStickyTaskQueueRequest. */
                class ResetStickyTaskQueueRequest implements IResetStickyTaskQueueRequest {

                    /**
                     * Constructs a new ResetStickyTaskQueueRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IResetStickyTaskQueueRequest);

                    /** ResetStickyTaskQueueRequest namespace. */
                    public namespace: string;

                    /** ResetStickyTaskQueueRequest execution. */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * Creates a new ResetStickyTaskQueueRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResetStickyTaskQueueRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IResetStickyTaskQueueRequest): temporal.api.workflowservice.v1.ResetStickyTaskQueueRequest;

                    /**
                     * Encodes the specified ResetStickyTaskQueueRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ResetStickyTaskQueueRequest.verify|verify} messages.
                     * @param message ResetStickyTaskQueueRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IResetStickyTaskQueueRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResetStickyTaskQueueRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ResetStickyTaskQueueRequest.verify|verify} messages.
                     * @param message ResetStickyTaskQueueRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IResetStickyTaskQueueRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResetStickyTaskQueueRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResetStickyTaskQueueRequest
                     * @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): temporal.api.workflowservice.v1.ResetStickyTaskQueueRequest;

                    /**
                     * Decodes a ResetStickyTaskQueueRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResetStickyTaskQueueRequest
                     * @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)): temporal.api.workflowservice.v1.ResetStickyTaskQueueRequest;

                    /**
                     * Creates a ResetStickyTaskQueueRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResetStickyTaskQueueRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ResetStickyTaskQueueRequest;

                    /**
                     * Creates a plain object from a ResetStickyTaskQueueRequest message. Also converts values to other types if specified.
                     * @param message ResetStickyTaskQueueRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ResetStickyTaskQueueRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResetStickyTaskQueueRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResetStickyTaskQueueRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResetStickyTaskQueueResponse. */
                interface IResetStickyTaskQueueResponse {
                }

                /** Represents a ResetStickyTaskQueueResponse. */
                class ResetStickyTaskQueueResponse implements IResetStickyTaskQueueResponse {

                    /**
                     * Constructs a new ResetStickyTaskQueueResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IResetStickyTaskQueueResponse);

                    /**
                     * Creates a new ResetStickyTaskQueueResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResetStickyTaskQueueResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IResetStickyTaskQueueResponse): temporal.api.workflowservice.v1.ResetStickyTaskQueueResponse;

                    /**
                     * Encodes the specified ResetStickyTaskQueueResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ResetStickyTaskQueueResponse.verify|verify} messages.
                     * @param message ResetStickyTaskQueueResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IResetStickyTaskQueueResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResetStickyTaskQueueResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ResetStickyTaskQueueResponse.verify|verify} messages.
                     * @param message ResetStickyTaskQueueResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IResetStickyTaskQueueResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResetStickyTaskQueueResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResetStickyTaskQueueResponse
                     * @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): temporal.api.workflowservice.v1.ResetStickyTaskQueueResponse;

                    /**
                     * Decodes a ResetStickyTaskQueueResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResetStickyTaskQueueResponse
                     * @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)): temporal.api.workflowservice.v1.ResetStickyTaskQueueResponse;

                    /**
                     * Creates a ResetStickyTaskQueueResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResetStickyTaskQueueResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ResetStickyTaskQueueResponse;

                    /**
                     * Creates a plain object from a ResetStickyTaskQueueResponse message. Also converts values to other types if specified.
                     * @param message ResetStickyTaskQueueResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ResetStickyTaskQueueResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResetStickyTaskQueueResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResetStickyTaskQueueResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ShutdownWorkerRequest. */
                interface IShutdownWorkerRequest {

                    /** ShutdownWorkerRequest namespace */
                    namespace?: (string|null);

                    /**
                     * sticky_task_queue may not always be populated. We want to ensure all workers
                     * send a shutdown request to update worker state for heartbeating, as well
                     * as cancel pending poll calls early, instead of waiting for timeouts.
                     */
                    stickyTaskQueue?: (string|null);

                    /** ShutdownWorkerRequest identity */
                    identity?: (string|null);

                    /** ShutdownWorkerRequest reason */
                    reason?: (string|null);

                    /** ShutdownWorkerRequest workerHeartbeat */
                    workerHeartbeat?: (temporal.api.worker.v1.IWorkerHeartbeat|null);

                    /**
                     * Technically this is also sent in the WorkerHeartbeat, but
                     * since worker heartbeating can be turned off, this needs
                     * to be a separate, top-level field.
                     */
                    workerInstanceKey?: (string|null);

                    /**
                     * Task queue name the worker is polling on. This allows server to cancel
                     * all outstanding poll RPC calls from SDK. This avoids a race condition that
                     * can lead to tasks being lost.
                     */
                    taskQueue?: (string|null);

                    /**
                     * Task queue types that help server cancel outstanding poll RPC
                     * calls from SDK. This avoids a race condition that can lead to tasks being lost.
                     */
                    taskQueueTypes?: (temporal.api.enums.v1.TaskQueueType[]|null);
                }

                /** Represents a ShutdownWorkerRequest. */
                class ShutdownWorkerRequest implements IShutdownWorkerRequest {

                    /**
                     * Constructs a new ShutdownWorkerRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IShutdownWorkerRequest);

                    /** ShutdownWorkerRequest namespace. */
                    public namespace: string;

                    /**
                     * sticky_task_queue may not always be populated. We want to ensure all workers
                     * send a shutdown request to update worker state for heartbeating, as well
                     * as cancel pending poll calls early, instead of waiting for timeouts.
                     */
                    public stickyTaskQueue: string;

                    /** ShutdownWorkerRequest identity. */
                    public identity: string;

                    /** ShutdownWorkerRequest reason. */
                    public reason: string;

                    /** ShutdownWorkerRequest workerHeartbeat. */
                    public workerHeartbeat?: (temporal.api.worker.v1.IWorkerHeartbeat|null);

                    /**
                     * Technically this is also sent in the WorkerHeartbeat, but
                     * since worker heartbeating can be turned off, this needs
                     * to be a separate, top-level field.
                     */
                    public workerInstanceKey: string;

                    /**
                     * Task queue name the worker is polling on. This allows server to cancel
                     * all outstanding poll RPC calls from SDK. This avoids a race condition that
                     * can lead to tasks being lost.
                     */
                    public taskQueue: string;

                    /**
                     * Task queue types that help server cancel outstanding poll RPC
                     * calls from SDK. This avoids a race condition that can lead to tasks being lost.
                     */
                    public taskQueueTypes: temporal.api.enums.v1.TaskQueueType[];

                    /**
                     * Creates a new ShutdownWorkerRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ShutdownWorkerRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IShutdownWorkerRequest): temporal.api.workflowservice.v1.ShutdownWorkerRequest;

                    /**
                     * Encodes the specified ShutdownWorkerRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ShutdownWorkerRequest.verify|verify} messages.
                     * @param message ShutdownWorkerRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IShutdownWorkerRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ShutdownWorkerRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ShutdownWorkerRequest.verify|verify} messages.
                     * @param message ShutdownWorkerRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IShutdownWorkerRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ShutdownWorkerRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ShutdownWorkerRequest
                     * @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): temporal.api.workflowservice.v1.ShutdownWorkerRequest;

                    /**
                     * Decodes a ShutdownWorkerRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ShutdownWorkerRequest
                     * @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)): temporal.api.workflowservice.v1.ShutdownWorkerRequest;

                    /**
                     * Creates a ShutdownWorkerRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ShutdownWorkerRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ShutdownWorkerRequest;

                    /**
                     * Creates a plain object from a ShutdownWorkerRequest message. Also converts values to other types if specified.
                     * @param message ShutdownWorkerRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ShutdownWorkerRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ShutdownWorkerRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ShutdownWorkerRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ShutdownWorkerResponse. */
                interface IShutdownWorkerResponse {
                }

                /** Represents a ShutdownWorkerResponse. */
                class ShutdownWorkerResponse implements IShutdownWorkerResponse {

                    /**
                     * Constructs a new ShutdownWorkerResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IShutdownWorkerResponse);

                    /**
                     * Creates a new ShutdownWorkerResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ShutdownWorkerResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IShutdownWorkerResponse): temporal.api.workflowservice.v1.ShutdownWorkerResponse;

                    /**
                     * Encodes the specified ShutdownWorkerResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ShutdownWorkerResponse.verify|verify} messages.
                     * @param message ShutdownWorkerResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IShutdownWorkerResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ShutdownWorkerResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ShutdownWorkerResponse.verify|verify} messages.
                     * @param message ShutdownWorkerResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IShutdownWorkerResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ShutdownWorkerResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ShutdownWorkerResponse
                     * @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): temporal.api.workflowservice.v1.ShutdownWorkerResponse;

                    /**
                     * Decodes a ShutdownWorkerResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ShutdownWorkerResponse
                     * @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)): temporal.api.workflowservice.v1.ShutdownWorkerResponse;

                    /**
                     * Creates a ShutdownWorkerResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ShutdownWorkerResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ShutdownWorkerResponse;

                    /**
                     * Creates a plain object from a ShutdownWorkerResponse message. Also converts values to other types if specified.
                     * @param message ShutdownWorkerResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ShutdownWorkerResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ShutdownWorkerResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ShutdownWorkerResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a QueryWorkflowRequest. */
                interface IQueryWorkflowRequest {

                    /** QueryWorkflowRequest namespace */
                    namespace?: (string|null);

                    /** QueryWorkflowRequest execution */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** QueryWorkflowRequest query */
                    query?: (temporal.api.query.v1.IWorkflowQuery|null);

                    /**
                     * QueryRejectCondition can used to reject the query if workflow state does not satisfy condition.
                     * Default: QUERY_REJECT_CONDITION_NONE.
                     */
                    queryRejectCondition?: (temporal.api.enums.v1.QueryRejectCondition|null);
                }

                /** Represents a QueryWorkflowRequest. */
                class QueryWorkflowRequest implements IQueryWorkflowRequest {

                    /**
                     * Constructs a new QueryWorkflowRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IQueryWorkflowRequest);

                    /** QueryWorkflowRequest namespace. */
                    public namespace: string;

                    /** QueryWorkflowRequest execution. */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** QueryWorkflowRequest query. */
                    public query?: (temporal.api.query.v1.IWorkflowQuery|null);

                    /**
                     * QueryRejectCondition can used to reject the query if workflow state does not satisfy condition.
                     * Default: QUERY_REJECT_CONDITION_NONE.
                     */
                    public queryRejectCondition: temporal.api.enums.v1.QueryRejectCondition;

                    /**
                     * Creates a new QueryWorkflowRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns QueryWorkflowRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IQueryWorkflowRequest): temporal.api.workflowservice.v1.QueryWorkflowRequest;

                    /**
                     * Encodes the specified QueryWorkflowRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.QueryWorkflowRequest.verify|verify} messages.
                     * @param message QueryWorkflowRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IQueryWorkflowRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified QueryWorkflowRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.QueryWorkflowRequest.verify|verify} messages.
                     * @param message QueryWorkflowRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IQueryWorkflowRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a QueryWorkflowRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns QueryWorkflowRequest
                     * @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): temporal.api.workflowservice.v1.QueryWorkflowRequest;

                    /**
                     * Decodes a QueryWorkflowRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns QueryWorkflowRequest
                     * @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)): temporal.api.workflowservice.v1.QueryWorkflowRequest;

                    /**
                     * Creates a QueryWorkflowRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns QueryWorkflowRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.QueryWorkflowRequest;

                    /**
                     * Creates a plain object from a QueryWorkflowRequest message. Also converts values to other types if specified.
                     * @param message QueryWorkflowRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.QueryWorkflowRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this QueryWorkflowRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for QueryWorkflowRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a QueryWorkflowResponse. */
                interface IQueryWorkflowResponse {

                    /** QueryWorkflowResponse queryResult */
                    queryResult?: (temporal.api.common.v1.IPayloads|null);

                    /** QueryWorkflowResponse queryRejected */
                    queryRejected?: (temporal.api.query.v1.IQueryRejected|null);
                }

                /** Represents a QueryWorkflowResponse. */
                class QueryWorkflowResponse implements IQueryWorkflowResponse {

                    /**
                     * Constructs a new QueryWorkflowResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IQueryWorkflowResponse);

                    /** QueryWorkflowResponse queryResult. */
                    public queryResult?: (temporal.api.common.v1.IPayloads|null);

                    /** QueryWorkflowResponse queryRejected. */
                    public queryRejected?: (temporal.api.query.v1.IQueryRejected|null);

                    /**
                     * Creates a new QueryWorkflowResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns QueryWorkflowResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IQueryWorkflowResponse): temporal.api.workflowservice.v1.QueryWorkflowResponse;

                    /**
                     * Encodes the specified QueryWorkflowResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.QueryWorkflowResponse.verify|verify} messages.
                     * @param message QueryWorkflowResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IQueryWorkflowResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified QueryWorkflowResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.QueryWorkflowResponse.verify|verify} messages.
                     * @param message QueryWorkflowResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IQueryWorkflowResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a QueryWorkflowResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns QueryWorkflowResponse
                     * @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): temporal.api.workflowservice.v1.QueryWorkflowResponse;

                    /**
                     * Decodes a QueryWorkflowResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns QueryWorkflowResponse
                     * @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)): temporal.api.workflowservice.v1.QueryWorkflowResponse;

                    /**
                     * Creates a QueryWorkflowResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns QueryWorkflowResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.QueryWorkflowResponse;

                    /**
                     * Creates a plain object from a QueryWorkflowResponse message. Also converts values to other types if specified.
                     * @param message QueryWorkflowResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.QueryWorkflowResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this QueryWorkflowResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for QueryWorkflowResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeWorkflowExecutionRequest. */
                interface IDescribeWorkflowExecutionRequest {

                    /** DescribeWorkflowExecutionRequest namespace */
                    namespace?: (string|null);

                    /** DescribeWorkflowExecutionRequest execution */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);
                }

                /** Represents a DescribeWorkflowExecutionRequest. */
                class DescribeWorkflowExecutionRequest implements IDescribeWorkflowExecutionRequest {

                    /**
                     * Constructs a new DescribeWorkflowExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeWorkflowExecutionRequest);

                    /** DescribeWorkflowExecutionRequest namespace. */
                    public namespace: string;

                    /** DescribeWorkflowExecutionRequest execution. */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * Creates a new DescribeWorkflowExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeWorkflowExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeWorkflowExecutionRequest): temporal.api.workflowservice.v1.DescribeWorkflowExecutionRequest;

                    /**
                     * Encodes the specified DescribeWorkflowExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkflowExecutionRequest.verify|verify} messages.
                     * @param message DescribeWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeWorkflowExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkflowExecutionRequest.verify|verify} messages.
                     * @param message DescribeWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeWorkflowExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeWorkflowExecutionRequest
                     * @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): temporal.api.workflowservice.v1.DescribeWorkflowExecutionRequest;

                    /**
                     * Decodes a DescribeWorkflowExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeWorkflowExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.DescribeWorkflowExecutionRequest;

                    /**
                     * Creates a DescribeWorkflowExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeWorkflowExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeWorkflowExecutionRequest;

                    /**
                     * Creates a plain object from a DescribeWorkflowExecutionRequest message. Also converts values to other types if specified.
                     * @param message DescribeWorkflowExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeWorkflowExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeWorkflowExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeWorkflowExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeWorkflowExecutionResponse. */
                interface IDescribeWorkflowExecutionResponse {

                    /** DescribeWorkflowExecutionResponse executionConfig */
                    executionConfig?: (temporal.api.workflow.v1.IWorkflowExecutionConfig|null);

                    /** DescribeWorkflowExecutionResponse workflowExecutionInfo */
                    workflowExecutionInfo?: (temporal.api.workflow.v1.IWorkflowExecutionInfo|null);

                    /** DescribeWorkflowExecutionResponse pendingActivities */
                    pendingActivities?: (temporal.api.workflow.v1.IPendingActivityInfo[]|null);

                    /** DescribeWorkflowExecutionResponse pendingChildren */
                    pendingChildren?: (temporal.api.workflow.v1.IPendingChildExecutionInfo[]|null);

                    /** DescribeWorkflowExecutionResponse pendingWorkflowTask */
                    pendingWorkflowTask?: (temporal.api.workflow.v1.IPendingWorkflowTaskInfo|null);

                    /** DescribeWorkflowExecutionResponse callbacks */
                    callbacks?: (temporal.api.workflow.v1.ICallbackInfo[]|null);

                    /** DescribeWorkflowExecutionResponse pendingNexusOperations */
                    pendingNexusOperations?: (temporal.api.workflow.v1.IPendingNexusOperationInfo[]|null);

                    /** DescribeWorkflowExecutionResponse workflowExtendedInfo */
                    workflowExtendedInfo?: (temporal.api.workflow.v1.IWorkflowExecutionExtendedInfo|null);
                }

                /** Represents a DescribeWorkflowExecutionResponse. */
                class DescribeWorkflowExecutionResponse implements IDescribeWorkflowExecutionResponse {

                    /**
                     * Constructs a new DescribeWorkflowExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeWorkflowExecutionResponse);

                    /** DescribeWorkflowExecutionResponse executionConfig. */
                    public executionConfig?: (temporal.api.workflow.v1.IWorkflowExecutionConfig|null);

                    /** DescribeWorkflowExecutionResponse workflowExecutionInfo. */
                    public workflowExecutionInfo?: (temporal.api.workflow.v1.IWorkflowExecutionInfo|null);

                    /** DescribeWorkflowExecutionResponse pendingActivities. */
                    public pendingActivities: temporal.api.workflow.v1.IPendingActivityInfo[];

                    /** DescribeWorkflowExecutionResponse pendingChildren. */
                    public pendingChildren: temporal.api.workflow.v1.IPendingChildExecutionInfo[];

                    /** DescribeWorkflowExecutionResponse pendingWorkflowTask. */
                    public pendingWorkflowTask?: (temporal.api.workflow.v1.IPendingWorkflowTaskInfo|null);

                    /** DescribeWorkflowExecutionResponse callbacks. */
                    public callbacks: temporal.api.workflow.v1.ICallbackInfo[];

                    /** DescribeWorkflowExecutionResponse pendingNexusOperations. */
                    public pendingNexusOperations: temporal.api.workflow.v1.IPendingNexusOperationInfo[];

                    /** DescribeWorkflowExecutionResponse workflowExtendedInfo. */
                    public workflowExtendedInfo?: (temporal.api.workflow.v1.IWorkflowExecutionExtendedInfo|null);

                    /**
                     * Creates a new DescribeWorkflowExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeWorkflowExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeWorkflowExecutionResponse): temporal.api.workflowservice.v1.DescribeWorkflowExecutionResponse;

                    /**
                     * Encodes the specified DescribeWorkflowExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkflowExecutionResponse.verify|verify} messages.
                     * @param message DescribeWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeWorkflowExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkflowExecutionResponse.verify|verify} messages.
                     * @param message DescribeWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeWorkflowExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeWorkflowExecutionResponse
                     * @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): temporal.api.workflowservice.v1.DescribeWorkflowExecutionResponse;

                    /**
                     * Decodes a DescribeWorkflowExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeWorkflowExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.DescribeWorkflowExecutionResponse;

                    /**
                     * Creates a DescribeWorkflowExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeWorkflowExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeWorkflowExecutionResponse;

                    /**
                     * Creates a plain object from a DescribeWorkflowExecutionResponse message. Also converts values to other types if specified.
                     * @param message DescribeWorkflowExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeWorkflowExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeWorkflowExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeWorkflowExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeTaskQueueRequest. */
                interface IDescribeTaskQueueRequest {

                    /** DescribeTaskQueueRequest namespace */
                    namespace?: (string|null);

                    /** Sticky queues are not supported in deprecated ENHANCED mode. */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * If unspecified (TASK_QUEUE_TYPE_UNSPECIFIED), then default value (TASK_QUEUE_TYPE_WORKFLOW) will be used.
                     * Only supported in default mode (use `task_queue_types` in ENHANCED mode instead).
                     */
                    taskQueueType?: (temporal.api.enums.v1.TaskQueueType|null);

                    /** Report stats for the requested task queue type(s). */
                    reportStats?: (boolean|null);

                    /** Report Task Queue Config */
                    reportConfig?: (boolean|null);

                    /**
                     * Deprecated, use `report_stats` instead.
                     * If true, the task queue status will be included in the response.
                     */
                    includeTaskQueueStatus?: (boolean|null);

                    /**
                     * Deprecated. ENHANCED mode is also being deprecated.
                     * Select the API mode to use for this request: DEFAULT mode (if unset) or ENHANCED mode.
                     * Consult the documentation for each field to understand which mode it is supported in.
                     */
                    apiMode?: (temporal.api.enums.v1.DescribeTaskQueueMode|null);

                    /**
                     * Deprecated (as part of the ENHANCED mode deprecation).
                     * Optional. If not provided, the result for the default Build ID will be returned. The default Build ID is the one
                     * mentioned in the first unconditional Assignment Rule. If there is no default Build ID, the result for the
                     * unversioned queue will be returned.
                     * (-- api-linter: core::0140::prepositions --)
                     */
                    versions?: (temporal.api.taskqueue.v1.ITaskQueueVersionSelection|null);

                    /**
                     * Deprecated (as part of the ENHANCED mode deprecation).
                     * Task queue types to report info about. If not specified, all types are considered.
                     */
                    taskQueueTypes?: (temporal.api.enums.v1.TaskQueueType[]|null);

                    /**
                     * Deprecated (as part of the ENHANCED mode deprecation).
                     * Report list of pollers for requested task queue types and versions.
                     */
                    reportPollers?: (boolean|null);

                    /**
                     * Deprecated (as part of the ENHANCED mode deprecation).
                     * Report task reachability for the requested versions and all task types (task reachability is not reported
                     * per task type).
                     */
                    reportTaskReachability?: (boolean|null);
                }

                /**
                 * (-- api-linter: core::0203::optional=disabled
                 * aip.dev/not-precedent: field_behavior annotation not available in our gogo fork --)
                 */
                class DescribeTaskQueueRequest implements IDescribeTaskQueueRequest {

                    /**
                     * Constructs a new DescribeTaskQueueRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeTaskQueueRequest);

                    /** DescribeTaskQueueRequest namespace. */
                    public namespace: string;

                    /** Sticky queues are not supported in deprecated ENHANCED mode. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * If unspecified (TASK_QUEUE_TYPE_UNSPECIFIED), then default value (TASK_QUEUE_TYPE_WORKFLOW) will be used.
                     * Only supported in default mode (use `task_queue_types` in ENHANCED mode instead).
                     */
                    public taskQueueType: temporal.api.enums.v1.TaskQueueType;

                    /** Report stats for the requested task queue type(s). */
                    public reportStats: boolean;

                    /** Report Task Queue Config */
                    public reportConfig: boolean;

                    /**
                     * Deprecated, use `report_stats` instead.
                     * If true, the task queue status will be included in the response.
                     */
                    public includeTaskQueueStatus: boolean;

                    /**
                     * Deprecated. ENHANCED mode is also being deprecated.
                     * Select the API mode to use for this request: DEFAULT mode (if unset) or ENHANCED mode.
                     * Consult the documentation for each field to understand which mode it is supported in.
                     */
                    public apiMode: temporal.api.enums.v1.DescribeTaskQueueMode;

                    /**
                     * Deprecated (as part of the ENHANCED mode deprecation).
                     * Optional. If not provided, the result for the default Build ID will be returned. The default Build ID is the one
                     * mentioned in the first unconditional Assignment Rule. If there is no default Build ID, the result for the
                     * unversioned queue will be returned.
                     * (-- api-linter: core::0140::prepositions --)
                     */
                    public versions?: (temporal.api.taskqueue.v1.ITaskQueueVersionSelection|null);

                    /**
                     * Deprecated (as part of the ENHANCED mode deprecation).
                     * Task queue types to report info about. If not specified, all types are considered.
                     */
                    public taskQueueTypes: temporal.api.enums.v1.TaskQueueType[];

                    /**
                     * Deprecated (as part of the ENHANCED mode deprecation).
                     * Report list of pollers for requested task queue types and versions.
                     */
                    public reportPollers: boolean;

                    /**
                     * Deprecated (as part of the ENHANCED mode deprecation).
                     * Report task reachability for the requested versions and all task types (task reachability is not reported
                     * per task type).
                     */
                    public reportTaskReachability: boolean;

                    /**
                     * Creates a new DescribeTaskQueueRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeTaskQueueRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeTaskQueueRequest): temporal.api.workflowservice.v1.DescribeTaskQueueRequest;

                    /**
                     * Encodes the specified DescribeTaskQueueRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeTaskQueueRequest.verify|verify} messages.
                     * @param message DescribeTaskQueueRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeTaskQueueRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeTaskQueueRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeTaskQueueRequest.verify|verify} messages.
                     * @param message DescribeTaskQueueRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeTaskQueueRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeTaskQueueRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeTaskQueueRequest
                     * @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): temporal.api.workflowservice.v1.DescribeTaskQueueRequest;

                    /**
                     * Decodes a DescribeTaskQueueRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeTaskQueueRequest
                     * @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)): temporal.api.workflowservice.v1.DescribeTaskQueueRequest;

                    /**
                     * Creates a DescribeTaskQueueRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeTaskQueueRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeTaskQueueRequest;

                    /**
                     * Creates a plain object from a DescribeTaskQueueRequest message. Also converts values to other types if specified.
                     * @param message DescribeTaskQueueRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeTaskQueueRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeTaskQueueRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeTaskQueueRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeTaskQueueResponse. */
                interface IDescribeTaskQueueResponse {

                    /** DescribeTaskQueueResponse pollers */
                    pollers?: (temporal.api.taskqueue.v1.IPollerInfo[]|null);

                    /**
                     * Statistics for the task queue.
                     * Only set if `report_stats` is set on the request.
                     */
                    stats?: (temporal.api.taskqueue.v1.ITaskQueueStats|null);

                    /**
                     * Task queue stats breakdown by priority key. Only contains actively used priority keys.
                     * Only set if `report_stats` is set on the request.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "by" is used to clarify the keys and values. --)
                     */
                    statsByPriorityKey?: ({ [k: string]: temporal.api.taskqueue.v1.ITaskQueueStats }|null);

                    /**
                     * Specifies which Worker Deployment Version(s) Server routes this Task Queue's tasks to.
                     * When not present, it means the tasks are routed to Unversioned workers (workers with
                     * UNVERSIONED or unspecified WorkerVersioningMode.)
                     * Task Queue Versioning info is updated indirectly by calling SetWorkerDeploymentCurrentVersion
                     * and SetWorkerDeploymentRampingVersion on Worker Deployments.
                     * Note: This information is not relevant to Pinned workflow executions and their activities as
                     * they are always routed to their Pinned Deployment Version. However, new workflow executions
                     * are typically not Pinned until they complete their first task (unless they are started with
                     * a Pinned VersioningOverride or are Child Workflows of a Pinned parent).
                     */
                    versioningInfo?: (temporal.api.taskqueue.v1.ITaskQueueVersioningInfo|null);

                    /** Only populated if report_task_queue_config is set to true. */
                    config?: (temporal.api.taskqueue.v1.ITaskQueueConfig|null);

                    /** DescribeTaskQueueResponse effectiveRateLimit */
                    effectiveRateLimit?: (temporal.api.workflowservice.v1.DescribeTaskQueueResponse.IEffectiveRateLimit|null);

                    /**
                     * Deprecated.
                     * Status of the task queue. Only populated when `include_task_queue_status` is set to true in the request.
                     */
                    taskQueueStatus?: (temporal.api.taskqueue.v1.ITaskQueueStatus|null);

                    /**
                     * Deprecated.
                     * Only returned in ENHANCED mode.
                     * This map contains Task Queue information for each Build ID. Empty string as key value means unversioned.
                     */
                    versionsInfo?: ({ [k: string]: temporal.api.taskqueue.v1.ITaskQueueVersionInfo }|null);
                }

                /** Represents a DescribeTaskQueueResponse. */
                class DescribeTaskQueueResponse implements IDescribeTaskQueueResponse {

                    /**
                     * Constructs a new DescribeTaskQueueResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeTaskQueueResponse);

                    /** DescribeTaskQueueResponse pollers. */
                    public pollers: temporal.api.taskqueue.v1.IPollerInfo[];

                    /**
                     * Statistics for the task queue.
                     * Only set if `report_stats` is set on the request.
                     */
                    public stats?: (temporal.api.taskqueue.v1.ITaskQueueStats|null);

                    /**
                     * Task queue stats breakdown by priority key. Only contains actively used priority keys.
                     * Only set if `report_stats` is set on the request.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "by" is used to clarify the keys and values. --)
                     */
                    public statsByPriorityKey: { [k: string]: temporal.api.taskqueue.v1.ITaskQueueStats };

                    /**
                     * Specifies which Worker Deployment Version(s) Server routes this Task Queue's tasks to.
                     * When not present, it means the tasks are routed to Unversioned workers (workers with
                     * UNVERSIONED or unspecified WorkerVersioningMode.)
                     * Task Queue Versioning info is updated indirectly by calling SetWorkerDeploymentCurrentVersion
                     * and SetWorkerDeploymentRampingVersion on Worker Deployments.
                     * Note: This information is not relevant to Pinned workflow executions and their activities as
                     * they are always routed to their Pinned Deployment Version. However, new workflow executions
                     * are typically not Pinned until they complete their first task (unless they are started with
                     * a Pinned VersioningOverride or are Child Workflows of a Pinned parent).
                     */
                    public versioningInfo?: (temporal.api.taskqueue.v1.ITaskQueueVersioningInfo|null);

                    /** Only populated if report_task_queue_config is set to true. */
                    public config?: (temporal.api.taskqueue.v1.ITaskQueueConfig|null);

                    /** DescribeTaskQueueResponse effectiveRateLimit. */
                    public effectiveRateLimit?: (temporal.api.workflowservice.v1.DescribeTaskQueueResponse.IEffectiveRateLimit|null);

                    /**
                     * Deprecated.
                     * Status of the task queue. Only populated when `include_task_queue_status` is set to true in the request.
                     */
                    public taskQueueStatus?: (temporal.api.taskqueue.v1.ITaskQueueStatus|null);

                    /**
                     * Deprecated.
                     * Only returned in ENHANCED mode.
                     * This map contains Task Queue information for each Build ID. Empty string as key value means unversioned.
                     */
                    public versionsInfo: { [k: string]: temporal.api.taskqueue.v1.ITaskQueueVersionInfo };

                    /**
                     * Creates a new DescribeTaskQueueResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeTaskQueueResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeTaskQueueResponse): temporal.api.workflowservice.v1.DescribeTaskQueueResponse;

                    /**
                     * Encodes the specified DescribeTaskQueueResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeTaskQueueResponse.verify|verify} messages.
                     * @param message DescribeTaskQueueResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeTaskQueueResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeTaskQueueResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeTaskQueueResponse.verify|verify} messages.
                     * @param message DescribeTaskQueueResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeTaskQueueResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeTaskQueueResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeTaskQueueResponse
                     * @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): temporal.api.workflowservice.v1.DescribeTaskQueueResponse;

                    /**
                     * Decodes a DescribeTaskQueueResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeTaskQueueResponse
                     * @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)): temporal.api.workflowservice.v1.DescribeTaskQueueResponse;

                    /**
                     * Creates a DescribeTaskQueueResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeTaskQueueResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeTaskQueueResponse;

                    /**
                     * Creates a plain object from a DescribeTaskQueueResponse message. Also converts values to other types if specified.
                     * @param message DescribeTaskQueueResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeTaskQueueResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeTaskQueueResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeTaskQueueResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace DescribeTaskQueueResponse {

                    /** Properties of an EffectiveRateLimit. */
                    interface IEffectiveRateLimit {

                        /** The effective rate limit for the task queue. */
                        requestsPerSecond?: (number|null);

                        /**
                         * Source of the RateLimit Configuration,which can be one of the following values:
                         * - SOURCE_API: The rate limit that is set via the TaskQueueConfig api.
                         * - SOURCE_WORKER: The rate limit is the value set using the workerOptions in TaskQueueActivitiesPerSecond.
                         * - SOURCE_SYSTEM: The rate limit is the default value set by the system
                         */
                        rateLimitSource?: (temporal.api.enums.v1.RateLimitSource|null);
                    }

                    /** Represents an EffectiveRateLimit. */
                    class EffectiveRateLimit implements IEffectiveRateLimit {

                        /**
                         * Constructs a new EffectiveRateLimit.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.DescribeTaskQueueResponse.IEffectiveRateLimit);

                        /** The effective rate limit for the task queue. */
                        public requestsPerSecond: number;

                        /**
                         * Source of the RateLimit Configuration,which can be one of the following values:
                         * - SOURCE_API: The rate limit that is set via the TaskQueueConfig api.
                         * - SOURCE_WORKER: The rate limit is the value set using the workerOptions in TaskQueueActivitiesPerSecond.
                         * - SOURCE_SYSTEM: The rate limit is the default value set by the system
                         */
                        public rateLimitSource: temporal.api.enums.v1.RateLimitSource;

                        /**
                         * Creates a new EffectiveRateLimit instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EffectiveRateLimit instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.DescribeTaskQueueResponse.IEffectiveRateLimit): temporal.api.workflowservice.v1.DescribeTaskQueueResponse.EffectiveRateLimit;

                        /**
                         * Encodes the specified EffectiveRateLimit message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeTaskQueueResponse.EffectiveRateLimit.verify|verify} messages.
                         * @param message EffectiveRateLimit message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.DescribeTaskQueueResponse.IEffectiveRateLimit, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EffectiveRateLimit message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeTaskQueueResponse.EffectiveRateLimit.verify|verify} messages.
                         * @param message EffectiveRateLimit message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.DescribeTaskQueueResponse.IEffectiveRateLimit, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EffectiveRateLimit message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EffectiveRateLimit
                         * @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): temporal.api.workflowservice.v1.DescribeTaskQueueResponse.EffectiveRateLimit;

                        /**
                         * Decodes an EffectiveRateLimit message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EffectiveRateLimit
                         * @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)): temporal.api.workflowservice.v1.DescribeTaskQueueResponse.EffectiveRateLimit;

                        /**
                         * Creates an EffectiveRateLimit message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EffectiveRateLimit
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeTaskQueueResponse.EffectiveRateLimit;

                        /**
                         * Creates a plain object from an EffectiveRateLimit message. Also converts values to other types if specified.
                         * @param message EffectiveRateLimit
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.DescribeTaskQueueResponse.EffectiveRateLimit, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EffectiveRateLimit to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EffectiveRateLimit
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a GetClusterInfoRequest. */
                interface IGetClusterInfoRequest {
                }

                /** Represents a GetClusterInfoRequest. */
                class GetClusterInfoRequest implements IGetClusterInfoRequest {

                    /**
                     * Constructs a new GetClusterInfoRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetClusterInfoRequest);

                    /**
                     * Creates a new GetClusterInfoRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetClusterInfoRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetClusterInfoRequest): temporal.api.workflowservice.v1.GetClusterInfoRequest;

                    /**
                     * Encodes the specified GetClusterInfoRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.GetClusterInfoRequest.verify|verify} messages.
                     * @param message GetClusterInfoRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetClusterInfoRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetClusterInfoRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetClusterInfoRequest.verify|verify} messages.
                     * @param message GetClusterInfoRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetClusterInfoRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetClusterInfoRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetClusterInfoRequest
                     * @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): temporal.api.workflowservice.v1.GetClusterInfoRequest;

                    /**
                     * Decodes a GetClusterInfoRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetClusterInfoRequest
                     * @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)): temporal.api.workflowservice.v1.GetClusterInfoRequest;

                    /**
                     * Creates a GetClusterInfoRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetClusterInfoRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetClusterInfoRequest;

                    /**
                     * Creates a plain object from a GetClusterInfoRequest message. Also converts values to other types if specified.
                     * @param message GetClusterInfoRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetClusterInfoRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetClusterInfoRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetClusterInfoRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetClusterInfoResponse. */
                interface IGetClusterInfoResponse {

                    /**
                     * Key is client name i.e "temporal-go", "temporal-java", or "temporal-cli".
                     * Value is ranges of supported versions of this client i.e ">1.1.1 <=1.4.0 || ^5.0.0".
                     */
                    supportedClients?: ({ [k: string]: string }|null);

                    /** GetClusterInfoResponse serverVersion */
                    serverVersion?: (string|null);

                    /** GetClusterInfoResponse clusterId */
                    clusterId?: (string|null);

                    /** GetClusterInfoResponse versionInfo */
                    versionInfo?: (temporal.api.version.v1.IVersionInfo|null);

                    /** GetClusterInfoResponse clusterName */
                    clusterName?: (string|null);

                    /** GetClusterInfoResponse historyShardCount */
                    historyShardCount?: (number|null);

                    /** GetClusterInfoResponse persistenceStore */
                    persistenceStore?: (string|null);

                    /** GetClusterInfoResponse visibilityStore */
                    visibilityStore?: (string|null);

                    /** GetClusterInfoResponse initialFailoverVersion */
                    initialFailoverVersion?: (Long|null);

                    /** GetClusterInfoResponse failoverVersionIncrement */
                    failoverVersionIncrement?: (Long|null);
                }

                /** GetClusterInfoResponse contains information about Temporal cluster. */
                class GetClusterInfoResponse implements IGetClusterInfoResponse {

                    /**
                     * Constructs a new GetClusterInfoResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetClusterInfoResponse);

                    /**
                     * Key is client name i.e "temporal-go", "temporal-java", or "temporal-cli".
                     * Value is ranges of supported versions of this client i.e ">1.1.1 <=1.4.0 || ^5.0.0".
                     */
                    public supportedClients: { [k: string]: string };

                    /** GetClusterInfoResponse serverVersion. */
                    public serverVersion: string;

                    /** GetClusterInfoResponse clusterId. */
                    public clusterId: string;

                    /** GetClusterInfoResponse versionInfo. */
                    public versionInfo?: (temporal.api.version.v1.IVersionInfo|null);

                    /** GetClusterInfoResponse clusterName. */
                    public clusterName: string;

                    /** GetClusterInfoResponse historyShardCount. */
                    public historyShardCount: number;

                    /** GetClusterInfoResponse persistenceStore. */
                    public persistenceStore: string;

                    /** GetClusterInfoResponse visibilityStore. */
                    public visibilityStore: string;

                    /** GetClusterInfoResponse initialFailoverVersion. */
                    public initialFailoverVersion: Long;

                    /** GetClusterInfoResponse failoverVersionIncrement. */
                    public failoverVersionIncrement: Long;

                    /**
                     * Creates a new GetClusterInfoResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetClusterInfoResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetClusterInfoResponse): temporal.api.workflowservice.v1.GetClusterInfoResponse;

                    /**
                     * Encodes the specified GetClusterInfoResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.GetClusterInfoResponse.verify|verify} messages.
                     * @param message GetClusterInfoResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetClusterInfoResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetClusterInfoResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetClusterInfoResponse.verify|verify} messages.
                     * @param message GetClusterInfoResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetClusterInfoResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetClusterInfoResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetClusterInfoResponse
                     * @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): temporal.api.workflowservice.v1.GetClusterInfoResponse;

                    /**
                     * Decodes a GetClusterInfoResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetClusterInfoResponse
                     * @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)): temporal.api.workflowservice.v1.GetClusterInfoResponse;

                    /**
                     * Creates a GetClusterInfoResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetClusterInfoResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetClusterInfoResponse;

                    /**
                     * Creates a plain object from a GetClusterInfoResponse message. Also converts values to other types if specified.
                     * @param message GetClusterInfoResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetClusterInfoResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetClusterInfoResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetClusterInfoResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetSystemInfoRequest. */
                interface IGetSystemInfoRequest {
                }

                /** Represents a GetSystemInfoRequest. */
                class GetSystemInfoRequest implements IGetSystemInfoRequest {

                    /**
                     * Constructs a new GetSystemInfoRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetSystemInfoRequest);

                    /**
                     * Creates a new GetSystemInfoRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetSystemInfoRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetSystemInfoRequest): temporal.api.workflowservice.v1.GetSystemInfoRequest;

                    /**
                     * Encodes the specified GetSystemInfoRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.GetSystemInfoRequest.verify|verify} messages.
                     * @param message GetSystemInfoRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetSystemInfoRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetSystemInfoRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetSystemInfoRequest.verify|verify} messages.
                     * @param message GetSystemInfoRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetSystemInfoRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetSystemInfoRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetSystemInfoRequest
                     * @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): temporal.api.workflowservice.v1.GetSystemInfoRequest;

                    /**
                     * Decodes a GetSystemInfoRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetSystemInfoRequest
                     * @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)): temporal.api.workflowservice.v1.GetSystemInfoRequest;

                    /**
                     * Creates a GetSystemInfoRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetSystemInfoRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetSystemInfoRequest;

                    /**
                     * Creates a plain object from a GetSystemInfoRequest message. Also converts values to other types if specified.
                     * @param message GetSystemInfoRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetSystemInfoRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetSystemInfoRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetSystemInfoRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetSystemInfoResponse. */
                interface IGetSystemInfoResponse {

                    /** Version of the server. */
                    serverVersion?: (string|null);

                    /** All capabilities the system supports. */
                    capabilities?: (temporal.api.workflowservice.v1.GetSystemInfoResponse.ICapabilities|null);
                }

                /** Represents a GetSystemInfoResponse. */
                class GetSystemInfoResponse implements IGetSystemInfoResponse {

                    /**
                     * Constructs a new GetSystemInfoResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetSystemInfoResponse);

                    /** Version of the server. */
                    public serverVersion: string;

                    /** All capabilities the system supports. */
                    public capabilities?: (temporal.api.workflowservice.v1.GetSystemInfoResponse.ICapabilities|null);

                    /**
                     * Creates a new GetSystemInfoResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetSystemInfoResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetSystemInfoResponse): temporal.api.workflowservice.v1.GetSystemInfoResponse;

                    /**
                     * Encodes the specified GetSystemInfoResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.GetSystemInfoResponse.verify|verify} messages.
                     * @param message GetSystemInfoResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetSystemInfoResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetSystemInfoResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetSystemInfoResponse.verify|verify} messages.
                     * @param message GetSystemInfoResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetSystemInfoResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetSystemInfoResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetSystemInfoResponse
                     * @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): temporal.api.workflowservice.v1.GetSystemInfoResponse;

                    /**
                     * Decodes a GetSystemInfoResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetSystemInfoResponse
                     * @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)): temporal.api.workflowservice.v1.GetSystemInfoResponse;

                    /**
                     * Creates a GetSystemInfoResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetSystemInfoResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetSystemInfoResponse;

                    /**
                     * Creates a plain object from a GetSystemInfoResponse message. Also converts values to other types if specified.
                     * @param message GetSystemInfoResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetSystemInfoResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetSystemInfoResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetSystemInfoResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace GetSystemInfoResponse {

                    /** Properties of a Capabilities. */
                    interface ICapabilities {

                        /** True if signal and query headers are supported. */
                        signalAndQueryHeader?: (boolean|null);

                        /**
                         * True if internal errors are differentiated from other types of errors for purposes of
                         * retrying non-internal errors.
                         *
                         * When unset/false, clients retry all failures. When true, clients should only retry
                         * non-internal errors.
                         */
                        internalErrorDifferentiation?: (boolean|null);

                        /** True if RespondActivityTaskFailed API supports including heartbeat details */
                        activityFailureIncludeHeartbeat?: (boolean|null);

                        /** Supports scheduled workflow features. */
                        supportsSchedules?: (boolean|null);

                        /** True if server uses protos that include temporal.api.failure.v1.Failure.encoded_attributes */
                        encodedFailureAttributes?: (boolean|null);

                        /**
                         * True if server supports dispatching Workflow and Activity tasks based on a worker's build_id
                         * (see:
                         * https://github.com/temporalio/proposals/blob/a123af3b559f43db16ea6dd31870bfb754c4dc5e/versioning/worker-versions.md)
                         */
                        buildIdBasedVersioning?: (boolean|null);

                        /** True if server supports upserting workflow memo */
                        upsertMemo?: (boolean|null);

                        /** True if server supports eager workflow task dispatching for the StartWorkflowExecution API */
                        eagerWorkflowStart?: (boolean|null);

                        /**
                         * True if the server knows about the sdk metadata field on WFT completions and will record
                         * it in history
                         */
                        sdkMetadata?: (boolean|null);

                        /**
                         * True if the server supports count group by execution status
                         * (-- api-linter: core::0140::prepositions=disabled --)
                         */
                        countGroupByExecutionStatus?: (boolean|null);

                        /**
                         * True if the server supports Nexus operations.
                         * This flag is dependent both on server version and for Nexus to be enabled via server configuration.
                         */
                        nexus?: (boolean|null);
                    }

                    /** System capability details. */
                    class Capabilities implements ICapabilities {

                        /**
                         * Constructs a new Capabilities.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.GetSystemInfoResponse.ICapabilities);

                        /** True if signal and query headers are supported. */
                        public signalAndQueryHeader: boolean;

                        /**
                         * True if internal errors are differentiated from other types of errors for purposes of
                         * retrying non-internal errors.
                         *
                         * When unset/false, clients retry all failures. When true, clients should only retry
                         * non-internal errors.
                         */
                        public internalErrorDifferentiation: boolean;

                        /** True if RespondActivityTaskFailed API supports including heartbeat details */
                        public activityFailureIncludeHeartbeat: boolean;

                        /** Supports scheduled workflow features. */
                        public supportsSchedules: boolean;

                        /** True if server uses protos that include temporal.api.failure.v1.Failure.encoded_attributes */
                        public encodedFailureAttributes: boolean;

                        /**
                         * True if server supports dispatching Workflow and Activity tasks based on a worker's build_id
                         * (see:
                         * https://github.com/temporalio/proposals/blob/a123af3b559f43db16ea6dd31870bfb754c4dc5e/versioning/worker-versions.md)
                         */
                        public buildIdBasedVersioning: boolean;

                        /** True if server supports upserting workflow memo */
                        public upsertMemo: boolean;

                        /** True if server supports eager workflow task dispatching for the StartWorkflowExecution API */
                        public eagerWorkflowStart: boolean;

                        /**
                         * True if the server knows about the sdk metadata field on WFT completions and will record
                         * it in history
                         */
                        public sdkMetadata: boolean;

                        /**
                         * True if the server supports count group by execution status
                         * (-- api-linter: core::0140::prepositions=disabled --)
                         */
                        public countGroupByExecutionStatus: boolean;

                        /**
                         * True if the server supports Nexus operations.
                         * This flag is dependent both on server version and for Nexus to be enabled via server configuration.
                         */
                        public nexus: boolean;

                        /**
                         * Creates a new Capabilities instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Capabilities instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.GetSystemInfoResponse.ICapabilities): temporal.api.workflowservice.v1.GetSystemInfoResponse.Capabilities;

                        /**
                         * Encodes the specified Capabilities message. Does not implicitly {@link temporal.api.workflowservice.v1.GetSystemInfoResponse.Capabilities.verify|verify} messages.
                         * @param message Capabilities message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.GetSystemInfoResponse.ICapabilities, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Capabilities message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetSystemInfoResponse.Capabilities.verify|verify} messages.
                         * @param message Capabilities message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.GetSystemInfoResponse.ICapabilities, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Capabilities message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Capabilities
                         * @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): temporal.api.workflowservice.v1.GetSystemInfoResponse.Capabilities;

                        /**
                         * Decodes a Capabilities message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Capabilities
                         * @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)): temporal.api.workflowservice.v1.GetSystemInfoResponse.Capabilities;

                        /**
                         * Creates a Capabilities message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Capabilities
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetSystemInfoResponse.Capabilities;

                        /**
                         * Creates a plain object from a Capabilities message. Also converts values to other types if specified.
                         * @param message Capabilities
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.GetSystemInfoResponse.Capabilities, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Capabilities to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Capabilities
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a ListTaskQueuePartitionsRequest. */
                interface IListTaskQueuePartitionsRequest {

                    /** ListTaskQueuePartitionsRequest namespace */
                    namespace?: (string|null);

                    /** ListTaskQueuePartitionsRequest taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);
                }

                /** Represents a ListTaskQueuePartitionsRequest. */
                class ListTaskQueuePartitionsRequest implements IListTaskQueuePartitionsRequest {

                    /**
                     * Constructs a new ListTaskQueuePartitionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListTaskQueuePartitionsRequest);

                    /** ListTaskQueuePartitionsRequest namespace. */
                    public namespace: string;

                    /** ListTaskQueuePartitionsRequest taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * Creates a new ListTaskQueuePartitionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListTaskQueuePartitionsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListTaskQueuePartitionsRequest): temporal.api.workflowservice.v1.ListTaskQueuePartitionsRequest;

                    /**
                     * Encodes the specified ListTaskQueuePartitionsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListTaskQueuePartitionsRequest.verify|verify} messages.
                     * @param message ListTaskQueuePartitionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListTaskQueuePartitionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListTaskQueuePartitionsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListTaskQueuePartitionsRequest.verify|verify} messages.
                     * @param message ListTaskQueuePartitionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListTaskQueuePartitionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListTaskQueuePartitionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListTaskQueuePartitionsRequest
                     * @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): temporal.api.workflowservice.v1.ListTaskQueuePartitionsRequest;

                    /**
                     * Decodes a ListTaskQueuePartitionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListTaskQueuePartitionsRequest
                     * @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)): temporal.api.workflowservice.v1.ListTaskQueuePartitionsRequest;

                    /**
                     * Creates a ListTaskQueuePartitionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListTaskQueuePartitionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListTaskQueuePartitionsRequest;

                    /**
                     * Creates a plain object from a ListTaskQueuePartitionsRequest message. Also converts values to other types if specified.
                     * @param message ListTaskQueuePartitionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListTaskQueuePartitionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListTaskQueuePartitionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListTaskQueuePartitionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListTaskQueuePartitionsResponse. */
                interface IListTaskQueuePartitionsResponse {

                    /** ListTaskQueuePartitionsResponse activityTaskQueuePartitions */
                    activityTaskQueuePartitions?: (temporal.api.taskqueue.v1.ITaskQueuePartitionMetadata[]|null);

                    /** ListTaskQueuePartitionsResponse workflowTaskQueuePartitions */
                    workflowTaskQueuePartitions?: (temporal.api.taskqueue.v1.ITaskQueuePartitionMetadata[]|null);
                }

                /** Represents a ListTaskQueuePartitionsResponse. */
                class ListTaskQueuePartitionsResponse implements IListTaskQueuePartitionsResponse {

                    /**
                     * Constructs a new ListTaskQueuePartitionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListTaskQueuePartitionsResponse);

                    /** ListTaskQueuePartitionsResponse activityTaskQueuePartitions. */
                    public activityTaskQueuePartitions: temporal.api.taskqueue.v1.ITaskQueuePartitionMetadata[];

                    /** ListTaskQueuePartitionsResponse workflowTaskQueuePartitions. */
                    public workflowTaskQueuePartitions: temporal.api.taskqueue.v1.ITaskQueuePartitionMetadata[];

                    /**
                     * Creates a new ListTaskQueuePartitionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListTaskQueuePartitionsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListTaskQueuePartitionsResponse): temporal.api.workflowservice.v1.ListTaskQueuePartitionsResponse;

                    /**
                     * Encodes the specified ListTaskQueuePartitionsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListTaskQueuePartitionsResponse.verify|verify} messages.
                     * @param message ListTaskQueuePartitionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListTaskQueuePartitionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListTaskQueuePartitionsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListTaskQueuePartitionsResponse.verify|verify} messages.
                     * @param message ListTaskQueuePartitionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListTaskQueuePartitionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListTaskQueuePartitionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListTaskQueuePartitionsResponse
                     * @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): temporal.api.workflowservice.v1.ListTaskQueuePartitionsResponse;

                    /**
                     * Decodes a ListTaskQueuePartitionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListTaskQueuePartitionsResponse
                     * @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)): temporal.api.workflowservice.v1.ListTaskQueuePartitionsResponse;

                    /**
                     * Creates a ListTaskQueuePartitionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListTaskQueuePartitionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListTaskQueuePartitionsResponse;

                    /**
                     * Creates a plain object from a ListTaskQueuePartitionsResponse message. Also converts values to other types if specified.
                     * @param message ListTaskQueuePartitionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListTaskQueuePartitionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListTaskQueuePartitionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListTaskQueuePartitionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateScheduleRequest. */
                interface ICreateScheduleRequest {

                    /** The namespace the schedule should be created in. */
                    namespace?: (string|null);

                    /** The id of the new schedule. */
                    scheduleId?: (string|null);

                    /** The schedule spec, policies, action, and initial state. */
                    schedule?: (temporal.api.schedule.v1.ISchedule|null);

                    /** Optional initial patch (e.g. to run the action once immediately). */
                    initialPatch?: (temporal.api.schedule.v1.ISchedulePatch|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** A unique identifier for this create request for idempotence. Typically UUIDv4. */
                    requestId?: (string|null);

                    /** Memo and search attributes to attach to the schedule itself. */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** CreateScheduleRequest searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);
                }

                /**
                 * (-- api-linter: core::0203::optional=disabled
                 * aip.dev/not-precedent: field_behavior annotation not available in our gogo fork --)
                 */
                class CreateScheduleRequest implements ICreateScheduleRequest {

                    /**
                     * Constructs a new CreateScheduleRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ICreateScheduleRequest);

                    /** The namespace the schedule should be created in. */
                    public namespace: string;

                    /** The id of the new schedule. */
                    public scheduleId: string;

                    /** The schedule spec, policies, action, and initial state. */
                    public schedule?: (temporal.api.schedule.v1.ISchedule|null);

                    /** Optional initial patch (e.g. to run the action once immediately). */
                    public initialPatch?: (temporal.api.schedule.v1.ISchedulePatch|null);

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** A unique identifier for this create request for idempotence. Typically UUIDv4. */
                    public requestId: string;

                    /** Memo and search attributes to attach to the schedule itself. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** CreateScheduleRequest searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * Creates a new CreateScheduleRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateScheduleRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ICreateScheduleRequest): temporal.api.workflowservice.v1.CreateScheduleRequest;

                    /**
                     * Encodes the specified CreateScheduleRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.CreateScheduleRequest.verify|verify} messages.
                     * @param message CreateScheduleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ICreateScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateScheduleRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CreateScheduleRequest.verify|verify} messages.
                     * @param message CreateScheduleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ICreateScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateScheduleRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateScheduleRequest
                     * @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): temporal.api.workflowservice.v1.CreateScheduleRequest;

                    /**
                     * Decodes a CreateScheduleRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateScheduleRequest
                     * @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)): temporal.api.workflowservice.v1.CreateScheduleRequest;

                    /**
                     * Creates a CreateScheduleRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateScheduleRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CreateScheduleRequest;

                    /**
                     * Creates a plain object from a CreateScheduleRequest message. Also converts values to other types if specified.
                     * @param message CreateScheduleRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.CreateScheduleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateScheduleRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateScheduleRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateScheduleResponse. */
                interface ICreateScheduleResponse {

                    /** CreateScheduleResponse conflictToken */
                    conflictToken?: (Uint8Array|null);
                }

                /** Represents a CreateScheduleResponse. */
                class CreateScheduleResponse implements ICreateScheduleResponse {

                    /**
                     * Constructs a new CreateScheduleResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ICreateScheduleResponse);

                    /** CreateScheduleResponse conflictToken. */
                    public conflictToken: Uint8Array;

                    /**
                     * Creates a new CreateScheduleResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateScheduleResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ICreateScheduleResponse): temporal.api.workflowservice.v1.CreateScheduleResponse;

                    /**
                     * Encodes the specified CreateScheduleResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.CreateScheduleResponse.verify|verify} messages.
                     * @param message CreateScheduleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ICreateScheduleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateScheduleResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CreateScheduleResponse.verify|verify} messages.
                     * @param message CreateScheduleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ICreateScheduleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateScheduleResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateScheduleResponse
                     * @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): temporal.api.workflowservice.v1.CreateScheduleResponse;

                    /**
                     * Decodes a CreateScheduleResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateScheduleResponse
                     * @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)): temporal.api.workflowservice.v1.CreateScheduleResponse;

                    /**
                     * Creates a CreateScheduleResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateScheduleResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CreateScheduleResponse;

                    /**
                     * Creates a plain object from a CreateScheduleResponse message. Also converts values to other types if specified.
                     * @param message CreateScheduleResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.CreateScheduleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateScheduleResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateScheduleResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeScheduleRequest. */
                interface IDescribeScheduleRequest {

                    /** The namespace of the schedule to describe. */
                    namespace?: (string|null);

                    /** The id of the schedule to describe. */
                    scheduleId?: (string|null);
                }

                /** Represents a DescribeScheduleRequest. */
                class DescribeScheduleRequest implements IDescribeScheduleRequest {

                    /**
                     * Constructs a new DescribeScheduleRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeScheduleRequest);

                    /** The namespace of the schedule to describe. */
                    public namespace: string;

                    /** The id of the schedule to describe. */
                    public scheduleId: string;

                    /**
                     * Creates a new DescribeScheduleRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeScheduleRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeScheduleRequest): temporal.api.workflowservice.v1.DescribeScheduleRequest;

                    /**
                     * Encodes the specified DescribeScheduleRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeScheduleRequest.verify|verify} messages.
                     * @param message DescribeScheduleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeScheduleRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeScheduleRequest.verify|verify} messages.
                     * @param message DescribeScheduleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeScheduleRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeScheduleRequest
                     * @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): temporal.api.workflowservice.v1.DescribeScheduleRequest;

                    /**
                     * Decodes a DescribeScheduleRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeScheduleRequest
                     * @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)): temporal.api.workflowservice.v1.DescribeScheduleRequest;

                    /**
                     * Creates a DescribeScheduleRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeScheduleRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeScheduleRequest;

                    /**
                     * Creates a plain object from a DescribeScheduleRequest message. Also converts values to other types if specified.
                     * @param message DescribeScheduleRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeScheduleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeScheduleRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeScheduleRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeScheduleResponse. */
                interface IDescribeScheduleResponse {

                    /**
                     * The complete current schedule details. This may not match the schedule as
                     * created because:
                     * - some types of schedule specs may get compiled into others (e.g.
                     * CronString into StructuredCalendarSpec)
                     * - some unspecified fields may be replaced by defaults
                     * - some fields in the state are modified automatically
                     * - the schedule may have been modified by UpdateSchedule or PatchSchedule
                     */
                    schedule?: (temporal.api.schedule.v1.ISchedule|null);

                    /** Extra schedule state info. */
                    info?: (temporal.api.schedule.v1.IScheduleInfo|null);

                    /** The memo and search attributes that the schedule was created with. */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** DescribeScheduleResponse searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * This value can be passed back to UpdateSchedule to ensure that the
                     * schedule was not modified between a Describe and an Update, which could
                     * lead to lost updates and other confusion.
                     */
                    conflictToken?: (Uint8Array|null);
                }

                /** Represents a DescribeScheduleResponse. */
                class DescribeScheduleResponse implements IDescribeScheduleResponse {

                    /**
                     * Constructs a new DescribeScheduleResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeScheduleResponse);

                    /**
                     * The complete current schedule details. This may not match the schedule as
                     * created because:
                     * - some types of schedule specs may get compiled into others (e.g.
                     * CronString into StructuredCalendarSpec)
                     * - some unspecified fields may be replaced by defaults
                     * - some fields in the state are modified automatically
                     * - the schedule may have been modified by UpdateSchedule or PatchSchedule
                     */
                    public schedule?: (temporal.api.schedule.v1.ISchedule|null);

                    /** Extra schedule state info. */
                    public info?: (temporal.api.schedule.v1.IScheduleInfo|null);

                    /** The memo and search attributes that the schedule was created with. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** DescribeScheduleResponse searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * This value can be passed back to UpdateSchedule to ensure that the
                     * schedule was not modified between a Describe and an Update, which could
                     * lead to lost updates and other confusion.
                     */
                    public conflictToken: Uint8Array;

                    /**
                     * Creates a new DescribeScheduleResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeScheduleResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeScheduleResponse): temporal.api.workflowservice.v1.DescribeScheduleResponse;

                    /**
                     * Encodes the specified DescribeScheduleResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeScheduleResponse.verify|verify} messages.
                     * @param message DescribeScheduleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeScheduleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeScheduleResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeScheduleResponse.verify|verify} messages.
                     * @param message DescribeScheduleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeScheduleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeScheduleResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeScheduleResponse
                     * @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): temporal.api.workflowservice.v1.DescribeScheduleResponse;

                    /**
                     * Decodes a DescribeScheduleResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeScheduleResponse
                     * @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)): temporal.api.workflowservice.v1.DescribeScheduleResponse;

                    /**
                     * Creates a DescribeScheduleResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeScheduleResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeScheduleResponse;

                    /**
                     * Creates a plain object from a DescribeScheduleResponse message. Also converts values to other types if specified.
                     * @param message DescribeScheduleResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeScheduleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeScheduleResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeScheduleResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateScheduleRequest. */
                interface IUpdateScheduleRequest {

                    /** The namespace of the schedule to update. */
                    namespace?: (string|null);

                    /** The id of the schedule to update. */
                    scheduleId?: (string|null);

                    /**
                     * The new schedule. The four main fields of the schedule (spec, action,
                     * policies, state) are replaced completely by the values in this message.
                     */
                    schedule?: (temporal.api.schedule.v1.ISchedule|null);

                    /**
                     * This can be the value of conflict_token from a DescribeScheduleResponse,
                     * which will cause this request to fail if the schedule has been modified
                     * between the Describe and this Update.
                     * If missing, the schedule will be updated unconditionally.
                     */
                    conflictToken?: (Uint8Array|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** A unique identifier for this update request for idempotence. Typically UUIDv4. */
                    requestId?: (string|null);

                    /**
                     * Schedule search attributes to be updated.
                     * Do not set this field if you do not want to update the search attributes.
                     * A non-null empty object will set the search attributes to an empty map.
                     * Note: you cannot only update the search attributes with `UpdateScheduleRequest`,
                     * you must also set the `schedule` field; otherwise, it will unset the schedule.
                     */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);
                }

                /** Represents an UpdateScheduleRequest. */
                class UpdateScheduleRequest implements IUpdateScheduleRequest {

                    /**
                     * Constructs a new UpdateScheduleRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateScheduleRequest);

                    /** The namespace of the schedule to update. */
                    public namespace: string;

                    /** The id of the schedule to update. */
                    public scheduleId: string;

                    /**
                     * The new schedule. The four main fields of the schedule (spec, action,
                     * policies, state) are replaced completely by the values in this message.
                     */
                    public schedule?: (temporal.api.schedule.v1.ISchedule|null);

                    /**
                     * This can be the value of conflict_token from a DescribeScheduleResponse,
                     * which will cause this request to fail if the schedule has been modified
                     * between the Describe and this Update.
                     * If missing, the schedule will be updated unconditionally.
                     */
                    public conflictToken: Uint8Array;

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** A unique identifier for this update request for idempotence. Typically UUIDv4. */
                    public requestId: string;

                    /**
                     * Schedule search attributes to be updated.
                     * Do not set this field if you do not want to update the search attributes.
                     * A non-null empty object will set the search attributes to an empty map.
                     * Note: you cannot only update the search attributes with `UpdateScheduleRequest`,
                     * you must also set the `schedule` field; otherwise, it will unset the schedule.
                     */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * Creates a new UpdateScheduleRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateScheduleRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateScheduleRequest): temporal.api.workflowservice.v1.UpdateScheduleRequest;

                    /**
                     * Encodes the specified UpdateScheduleRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateScheduleRequest.verify|verify} messages.
                     * @param message UpdateScheduleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateScheduleRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateScheduleRequest.verify|verify} messages.
                     * @param message UpdateScheduleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateScheduleRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateScheduleRequest
                     * @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): temporal.api.workflowservice.v1.UpdateScheduleRequest;

                    /**
                     * Decodes an UpdateScheduleRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateScheduleRequest
                     * @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)): temporal.api.workflowservice.v1.UpdateScheduleRequest;

                    /**
                     * Creates an UpdateScheduleRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateScheduleRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateScheduleRequest;

                    /**
                     * Creates a plain object from an UpdateScheduleRequest message. Also converts values to other types if specified.
                     * @param message UpdateScheduleRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateScheduleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateScheduleRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateScheduleRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateScheduleResponse. */
                interface IUpdateScheduleResponse {
                }

                /** Represents an UpdateScheduleResponse. */
                class UpdateScheduleResponse implements IUpdateScheduleResponse {

                    /**
                     * Constructs a new UpdateScheduleResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateScheduleResponse);

                    /**
                     * Creates a new UpdateScheduleResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateScheduleResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateScheduleResponse): temporal.api.workflowservice.v1.UpdateScheduleResponse;

                    /**
                     * Encodes the specified UpdateScheduleResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateScheduleResponse.verify|verify} messages.
                     * @param message UpdateScheduleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateScheduleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateScheduleResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateScheduleResponse.verify|verify} messages.
                     * @param message UpdateScheduleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateScheduleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateScheduleResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateScheduleResponse
                     * @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): temporal.api.workflowservice.v1.UpdateScheduleResponse;

                    /**
                     * Decodes an UpdateScheduleResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateScheduleResponse
                     * @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)): temporal.api.workflowservice.v1.UpdateScheduleResponse;

                    /**
                     * Creates an UpdateScheduleResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateScheduleResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateScheduleResponse;

                    /**
                     * Creates a plain object from an UpdateScheduleResponse message. Also converts values to other types if specified.
                     * @param message UpdateScheduleResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateScheduleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateScheduleResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateScheduleResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PatchScheduleRequest. */
                interface IPatchScheduleRequest {

                    /** The namespace of the schedule to patch. */
                    namespace?: (string|null);

                    /** The id of the schedule to patch. */
                    scheduleId?: (string|null);

                    /** PatchScheduleRequest patch */
                    patch?: (temporal.api.schedule.v1.ISchedulePatch|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** A unique identifier for this update request for idempotence. Typically UUIDv4. */
                    requestId?: (string|null);
                }

                /** Represents a PatchScheduleRequest. */
                class PatchScheduleRequest implements IPatchScheduleRequest {

                    /**
                     * Constructs a new PatchScheduleRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPatchScheduleRequest);

                    /** The namespace of the schedule to patch. */
                    public namespace: string;

                    /** The id of the schedule to patch. */
                    public scheduleId: string;

                    /** PatchScheduleRequest patch. */
                    public patch?: (temporal.api.schedule.v1.ISchedulePatch|null);

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** A unique identifier for this update request for idempotence. Typically UUIDv4. */
                    public requestId: string;

                    /**
                     * Creates a new PatchScheduleRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PatchScheduleRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPatchScheduleRequest): temporal.api.workflowservice.v1.PatchScheduleRequest;

                    /**
                     * Encodes the specified PatchScheduleRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.PatchScheduleRequest.verify|verify} messages.
                     * @param message PatchScheduleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPatchScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PatchScheduleRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PatchScheduleRequest.verify|verify} messages.
                     * @param message PatchScheduleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPatchScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PatchScheduleRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PatchScheduleRequest
                     * @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): temporal.api.workflowservice.v1.PatchScheduleRequest;

                    /**
                     * Decodes a PatchScheduleRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PatchScheduleRequest
                     * @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)): temporal.api.workflowservice.v1.PatchScheduleRequest;

                    /**
                     * Creates a PatchScheduleRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PatchScheduleRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PatchScheduleRequest;

                    /**
                     * Creates a plain object from a PatchScheduleRequest message. Also converts values to other types if specified.
                     * @param message PatchScheduleRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PatchScheduleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PatchScheduleRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PatchScheduleRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PatchScheduleResponse. */
                interface IPatchScheduleResponse {
                }

                /** Represents a PatchScheduleResponse. */
                class PatchScheduleResponse implements IPatchScheduleResponse {

                    /**
                     * Constructs a new PatchScheduleResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPatchScheduleResponse);

                    /**
                     * Creates a new PatchScheduleResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PatchScheduleResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPatchScheduleResponse): temporal.api.workflowservice.v1.PatchScheduleResponse;

                    /**
                     * Encodes the specified PatchScheduleResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.PatchScheduleResponse.verify|verify} messages.
                     * @param message PatchScheduleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPatchScheduleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PatchScheduleResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PatchScheduleResponse.verify|verify} messages.
                     * @param message PatchScheduleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPatchScheduleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PatchScheduleResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PatchScheduleResponse
                     * @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): temporal.api.workflowservice.v1.PatchScheduleResponse;

                    /**
                     * Decodes a PatchScheduleResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PatchScheduleResponse
                     * @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)): temporal.api.workflowservice.v1.PatchScheduleResponse;

                    /**
                     * Creates a PatchScheduleResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PatchScheduleResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PatchScheduleResponse;

                    /**
                     * Creates a plain object from a PatchScheduleResponse message. Also converts values to other types if specified.
                     * @param message PatchScheduleResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PatchScheduleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PatchScheduleResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PatchScheduleResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListScheduleMatchingTimesRequest. */
                interface IListScheduleMatchingTimesRequest {

                    /** The namespace of the schedule to query. */
                    namespace?: (string|null);

                    /** The id of the schedule to query. */
                    scheduleId?: (string|null);

                    /** Time range to query. */
                    startTime?: (google.protobuf.ITimestamp|null);

                    /** ListScheduleMatchingTimesRequest endTime */
                    endTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a ListScheduleMatchingTimesRequest. */
                class ListScheduleMatchingTimesRequest implements IListScheduleMatchingTimesRequest {

                    /**
                     * Constructs a new ListScheduleMatchingTimesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListScheduleMatchingTimesRequest);

                    /** The namespace of the schedule to query. */
                    public namespace: string;

                    /** The id of the schedule to query. */
                    public scheduleId: string;

                    /** Time range to query. */
                    public startTime?: (google.protobuf.ITimestamp|null);

                    /** ListScheduleMatchingTimesRequest endTime. */
                    public endTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new ListScheduleMatchingTimesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListScheduleMatchingTimesRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListScheduleMatchingTimesRequest): temporal.api.workflowservice.v1.ListScheduleMatchingTimesRequest;

                    /**
                     * Encodes the specified ListScheduleMatchingTimesRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListScheduleMatchingTimesRequest.verify|verify} messages.
                     * @param message ListScheduleMatchingTimesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListScheduleMatchingTimesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListScheduleMatchingTimesRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListScheduleMatchingTimesRequest.verify|verify} messages.
                     * @param message ListScheduleMatchingTimesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListScheduleMatchingTimesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListScheduleMatchingTimesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListScheduleMatchingTimesRequest
                     * @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): temporal.api.workflowservice.v1.ListScheduleMatchingTimesRequest;

                    /**
                     * Decodes a ListScheduleMatchingTimesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListScheduleMatchingTimesRequest
                     * @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)): temporal.api.workflowservice.v1.ListScheduleMatchingTimesRequest;

                    /**
                     * Creates a ListScheduleMatchingTimesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListScheduleMatchingTimesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListScheduleMatchingTimesRequest;

                    /**
                     * Creates a plain object from a ListScheduleMatchingTimesRequest message. Also converts values to other types if specified.
                     * @param message ListScheduleMatchingTimesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListScheduleMatchingTimesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListScheduleMatchingTimesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListScheduleMatchingTimesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListScheduleMatchingTimesResponse. */
                interface IListScheduleMatchingTimesResponse {

                    /** ListScheduleMatchingTimesResponse startTime */
                    startTime?: (google.protobuf.ITimestamp[]|null);
                }

                /** Represents a ListScheduleMatchingTimesResponse. */
                class ListScheduleMatchingTimesResponse implements IListScheduleMatchingTimesResponse {

                    /**
                     * Constructs a new ListScheduleMatchingTimesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListScheduleMatchingTimesResponse);

                    /** ListScheduleMatchingTimesResponse startTime. */
                    public startTime: google.protobuf.ITimestamp[];

                    /**
                     * Creates a new ListScheduleMatchingTimesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListScheduleMatchingTimesResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListScheduleMatchingTimesResponse): temporal.api.workflowservice.v1.ListScheduleMatchingTimesResponse;

                    /**
                     * Encodes the specified ListScheduleMatchingTimesResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListScheduleMatchingTimesResponse.verify|verify} messages.
                     * @param message ListScheduleMatchingTimesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListScheduleMatchingTimesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListScheduleMatchingTimesResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListScheduleMatchingTimesResponse.verify|verify} messages.
                     * @param message ListScheduleMatchingTimesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListScheduleMatchingTimesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListScheduleMatchingTimesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListScheduleMatchingTimesResponse
                     * @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): temporal.api.workflowservice.v1.ListScheduleMatchingTimesResponse;

                    /**
                     * Decodes a ListScheduleMatchingTimesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListScheduleMatchingTimesResponse
                     * @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)): temporal.api.workflowservice.v1.ListScheduleMatchingTimesResponse;

                    /**
                     * Creates a ListScheduleMatchingTimesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListScheduleMatchingTimesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListScheduleMatchingTimesResponse;

                    /**
                     * Creates a plain object from a ListScheduleMatchingTimesResponse message. Also converts values to other types if specified.
                     * @param message ListScheduleMatchingTimesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListScheduleMatchingTimesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListScheduleMatchingTimesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListScheduleMatchingTimesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteScheduleRequest. */
                interface IDeleteScheduleRequest {

                    /** The namespace of the schedule to delete. */
                    namespace?: (string|null);

                    /** The id of the schedule to delete. */
                    scheduleId?: (string|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);
                }

                /** Represents a DeleteScheduleRequest. */
                class DeleteScheduleRequest implements IDeleteScheduleRequest {

                    /**
                     * Constructs a new DeleteScheduleRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteScheduleRequest);

                    /** The namespace of the schedule to delete. */
                    public namespace: string;

                    /** The id of the schedule to delete. */
                    public scheduleId: string;

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /**
                     * Creates a new DeleteScheduleRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteScheduleRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteScheduleRequest): temporal.api.workflowservice.v1.DeleteScheduleRequest;

                    /**
                     * Encodes the specified DeleteScheduleRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteScheduleRequest.verify|verify} messages.
                     * @param message DeleteScheduleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteScheduleRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteScheduleRequest.verify|verify} messages.
                     * @param message DeleteScheduleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteScheduleRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteScheduleRequest
                     * @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): temporal.api.workflowservice.v1.DeleteScheduleRequest;

                    /**
                     * Decodes a DeleteScheduleRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteScheduleRequest
                     * @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)): temporal.api.workflowservice.v1.DeleteScheduleRequest;

                    /**
                     * Creates a DeleteScheduleRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteScheduleRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteScheduleRequest;

                    /**
                     * Creates a plain object from a DeleteScheduleRequest message. Also converts values to other types if specified.
                     * @param message DeleteScheduleRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteScheduleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteScheduleRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteScheduleRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteScheduleResponse. */
                interface IDeleteScheduleResponse {
                }

                /** Represents a DeleteScheduleResponse. */
                class DeleteScheduleResponse implements IDeleteScheduleResponse {

                    /**
                     * Constructs a new DeleteScheduleResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteScheduleResponse);

                    /**
                     * Creates a new DeleteScheduleResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteScheduleResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteScheduleResponse): temporal.api.workflowservice.v1.DeleteScheduleResponse;

                    /**
                     * Encodes the specified DeleteScheduleResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteScheduleResponse.verify|verify} messages.
                     * @param message DeleteScheduleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteScheduleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteScheduleResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteScheduleResponse.verify|verify} messages.
                     * @param message DeleteScheduleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteScheduleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteScheduleResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteScheduleResponse
                     * @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): temporal.api.workflowservice.v1.DeleteScheduleResponse;

                    /**
                     * Decodes a DeleteScheduleResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteScheduleResponse
                     * @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)): temporal.api.workflowservice.v1.DeleteScheduleResponse;

                    /**
                     * Creates a DeleteScheduleResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteScheduleResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteScheduleResponse;

                    /**
                     * Creates a plain object from a DeleteScheduleResponse message. Also converts values to other types if specified.
                     * @param message DeleteScheduleResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteScheduleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteScheduleResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteScheduleResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListSchedulesRequest. */
                interface IListSchedulesRequest {

                    /** The namespace to list schedules in. */
                    namespace?: (string|null);

                    /** How many to return at once. */
                    maximumPageSize?: (number|null);

                    /** Token to get the next page of results. */
                    nextPageToken?: (Uint8Array|null);

                    /** Query to filter schedules. */
                    query?: (string|null);
                }

                /** Represents a ListSchedulesRequest. */
                class ListSchedulesRequest implements IListSchedulesRequest {

                    /**
                     * Constructs a new ListSchedulesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListSchedulesRequest);

                    /** The namespace to list schedules in. */
                    public namespace: string;

                    /** How many to return at once. */
                    public maximumPageSize: number;

                    /** Token to get the next page of results. */
                    public nextPageToken: Uint8Array;

                    /** Query to filter schedules. */
                    public query: string;

                    /**
                     * Creates a new ListSchedulesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListSchedulesRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListSchedulesRequest): temporal.api.workflowservice.v1.ListSchedulesRequest;

                    /**
                     * Encodes the specified ListSchedulesRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListSchedulesRequest.verify|verify} messages.
                     * @param message ListSchedulesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListSchedulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListSchedulesRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListSchedulesRequest.verify|verify} messages.
                     * @param message ListSchedulesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListSchedulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListSchedulesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListSchedulesRequest
                     * @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): temporal.api.workflowservice.v1.ListSchedulesRequest;

                    /**
                     * Decodes a ListSchedulesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListSchedulesRequest
                     * @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)): temporal.api.workflowservice.v1.ListSchedulesRequest;

                    /**
                     * Creates a ListSchedulesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListSchedulesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListSchedulesRequest;

                    /**
                     * Creates a plain object from a ListSchedulesRequest message. Also converts values to other types if specified.
                     * @param message ListSchedulesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListSchedulesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListSchedulesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListSchedulesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListSchedulesResponse. */
                interface IListSchedulesResponse {

                    /** ListSchedulesResponse schedules */
                    schedules?: (temporal.api.schedule.v1.IScheduleListEntry[]|null);

                    /** ListSchedulesResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListSchedulesResponse. */
                class ListSchedulesResponse implements IListSchedulesResponse {

                    /**
                     * Constructs a new ListSchedulesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListSchedulesResponse);

                    /** ListSchedulesResponse schedules. */
                    public schedules: temporal.api.schedule.v1.IScheduleListEntry[];

                    /** ListSchedulesResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListSchedulesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListSchedulesResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListSchedulesResponse): temporal.api.workflowservice.v1.ListSchedulesResponse;

                    /**
                     * Encodes the specified ListSchedulesResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListSchedulesResponse.verify|verify} messages.
                     * @param message ListSchedulesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListSchedulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListSchedulesResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListSchedulesResponse.verify|verify} messages.
                     * @param message ListSchedulesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListSchedulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListSchedulesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListSchedulesResponse
                     * @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): temporal.api.workflowservice.v1.ListSchedulesResponse;

                    /**
                     * Decodes a ListSchedulesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListSchedulesResponse
                     * @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)): temporal.api.workflowservice.v1.ListSchedulesResponse;

                    /**
                     * Creates a ListSchedulesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListSchedulesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListSchedulesResponse;

                    /**
                     * Creates a plain object from a ListSchedulesResponse message. Also converts values to other types if specified.
                     * @param message ListSchedulesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListSchedulesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListSchedulesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListSchedulesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CountSchedulesRequest. */
                interface ICountSchedulesRequest {

                    /** CountSchedulesRequest namespace */
                    namespace?: (string|null);

                    /** Visibility query, see https://docs.temporal.io/list-filter for the syntax. */
                    query?: (string|null);
                }

                /** Represents a CountSchedulesRequest. */
                class CountSchedulesRequest implements ICountSchedulesRequest {

                    /**
                     * Constructs a new CountSchedulesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ICountSchedulesRequest);

                    /** CountSchedulesRequest namespace. */
                    public namespace: string;

                    /** Visibility query, see https://docs.temporal.io/list-filter for the syntax. */
                    public query: string;

                    /**
                     * Creates a new CountSchedulesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CountSchedulesRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ICountSchedulesRequest): temporal.api.workflowservice.v1.CountSchedulesRequest;

                    /**
                     * Encodes the specified CountSchedulesRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.CountSchedulesRequest.verify|verify} messages.
                     * @param message CountSchedulesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ICountSchedulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CountSchedulesRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CountSchedulesRequest.verify|verify} messages.
                     * @param message CountSchedulesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ICountSchedulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CountSchedulesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CountSchedulesRequest
                     * @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): temporal.api.workflowservice.v1.CountSchedulesRequest;

                    /**
                     * Decodes a CountSchedulesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CountSchedulesRequest
                     * @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)): temporal.api.workflowservice.v1.CountSchedulesRequest;

                    /**
                     * Creates a CountSchedulesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CountSchedulesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CountSchedulesRequest;

                    /**
                     * Creates a plain object from a CountSchedulesRequest message. Also converts values to other types if specified.
                     * @param message CountSchedulesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.CountSchedulesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CountSchedulesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CountSchedulesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CountSchedulesResponse. */
                interface ICountSchedulesResponse {

                    /**
                     * If `query` is not grouping by any field, the count is an approximate number
                     * of schedules that match the query.
                     * If `query` is grouping by a field, the count is simply the sum of the counts
                     * of the groups returned in the response. This number can be smaller than the
                     * total number of schedules matching the query.
                     */
                    count?: (Long|null);

                    /**
                     * Contains the groups if the request is grouping by a field.
                     * The list might not be complete, and the counts of each group is approximate.
                     */
                    groups?: (temporal.api.workflowservice.v1.CountSchedulesResponse.IAggregationGroup[]|null);
                }

                /** Represents a CountSchedulesResponse. */
                class CountSchedulesResponse implements ICountSchedulesResponse {

                    /**
                     * Constructs a new CountSchedulesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ICountSchedulesResponse);

                    /**
                     * If `query` is not grouping by any field, the count is an approximate number
                     * of schedules that match the query.
                     * If `query` is grouping by a field, the count is simply the sum of the counts
                     * of the groups returned in the response. This number can be smaller than the
                     * total number of schedules matching the query.
                     */
                    public count: Long;

                    /**
                     * Contains the groups if the request is grouping by a field.
                     * The list might not be complete, and the counts of each group is approximate.
                     */
                    public groups: temporal.api.workflowservice.v1.CountSchedulesResponse.IAggregationGroup[];

                    /**
                     * Creates a new CountSchedulesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CountSchedulesResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ICountSchedulesResponse): temporal.api.workflowservice.v1.CountSchedulesResponse;

                    /**
                     * Encodes the specified CountSchedulesResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.CountSchedulesResponse.verify|verify} messages.
                     * @param message CountSchedulesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ICountSchedulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CountSchedulesResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CountSchedulesResponse.verify|verify} messages.
                     * @param message CountSchedulesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ICountSchedulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CountSchedulesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CountSchedulesResponse
                     * @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): temporal.api.workflowservice.v1.CountSchedulesResponse;

                    /**
                     * Decodes a CountSchedulesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CountSchedulesResponse
                     * @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)): temporal.api.workflowservice.v1.CountSchedulesResponse;

                    /**
                     * Creates a CountSchedulesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CountSchedulesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CountSchedulesResponse;

                    /**
                     * Creates a plain object from a CountSchedulesResponse message. Also converts values to other types if specified.
                     * @param message CountSchedulesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.CountSchedulesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CountSchedulesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CountSchedulesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace CountSchedulesResponse {

                    /** Properties of an AggregationGroup. */
                    interface IAggregationGroup {

                        /** AggregationGroup groupValues */
                        groupValues?: (temporal.api.common.v1.IPayload[]|null);

                        /** AggregationGroup count */
                        count?: (Long|null);
                    }

                    /** Represents an AggregationGroup. */
                    class AggregationGroup implements IAggregationGroup {

                        /**
                         * Constructs a new AggregationGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.CountSchedulesResponse.IAggregationGroup);

                        /** AggregationGroup groupValues. */
                        public groupValues: temporal.api.common.v1.IPayload[];

                        /** AggregationGroup count. */
                        public count: Long;

                        /**
                         * Creates a new AggregationGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AggregationGroup instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.CountSchedulesResponse.IAggregationGroup): temporal.api.workflowservice.v1.CountSchedulesResponse.AggregationGroup;

                        /**
                         * Encodes the specified AggregationGroup message. Does not implicitly {@link temporal.api.workflowservice.v1.CountSchedulesResponse.AggregationGroup.verify|verify} messages.
                         * @param message AggregationGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.CountSchedulesResponse.IAggregationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AggregationGroup message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CountSchedulesResponse.AggregationGroup.verify|verify} messages.
                         * @param message AggregationGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.CountSchedulesResponse.IAggregationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AggregationGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AggregationGroup
                         * @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): temporal.api.workflowservice.v1.CountSchedulesResponse.AggregationGroup;

                        /**
                         * Decodes an AggregationGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AggregationGroup
                         * @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)): temporal.api.workflowservice.v1.CountSchedulesResponse.AggregationGroup;

                        /**
                         * Creates an AggregationGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AggregationGroup
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CountSchedulesResponse.AggregationGroup;

                        /**
                         * Creates a plain object from an AggregationGroup message. Also converts values to other types if specified.
                         * @param message AggregationGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.CountSchedulesResponse.AggregationGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AggregationGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AggregationGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an UpdateWorkerBuildIdCompatibilityRequest. */
                interface IUpdateWorkerBuildIdCompatibilityRequest {

                    /** UpdateWorkerBuildIdCompatibilityRequest namespace */
                    namespace?: (string|null);

                    /**
                     * Must be set, the task queue to apply changes to. Because all workers on a given task queue
                     * must have the same set of workflow & activity implementations, there is no reason to specify
                     * a task queue type here.
                     */
                    taskQueue?: (string|null);

                    /**
                     * A new build id. This operation will create a new set which will be the new overall
                     * default version for the queue, with this id as its only member. This new set is
                     * incompatible with all previous sets/versions.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: In makes perfect sense here. --)
                     */
                    addNewBuildIdInNewDefaultSet?: (string|null);

                    /** Adds a new id to an existing compatible set, see sub-message definition for more. */
                    addNewCompatibleBuildId?: (temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IAddNewCompatibleVersion|null);

                    /**
                     * Promote an existing set to be the current default (if it isn't already) by targeting
                     * an existing build id within it. This field's value is the extant build id.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: Names are hard. --)
                     */
                    promoteSetByBuildId?: (string|null);

                    /**
                     * Promote an existing build id within some set to be the current default for that set.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: Within makes perfect sense here. --)
                     */
                    promoteBuildIdWithinSet?: (string|null);

                    /**
                     * Merge two existing sets together, thus declaring all build IDs in both sets compatible
                     * with one another. The primary set's default will become the default for the merged set.
                     * This is useful if you've accidentally declared a new ID as incompatible you meant to
                     * declare as compatible. The unusual case of incomplete replication during failover could
                     * also result in a split set, which this operation can repair.
                     */
                    mergeSets?: (temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IMergeSets|null);
                }

                /** [cleanup-wv-pre-release] */
                class UpdateWorkerBuildIdCompatibilityRequest implements IUpdateWorkerBuildIdCompatibilityRequest {

                    /**
                     * Constructs a new UpdateWorkerBuildIdCompatibilityRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkerBuildIdCompatibilityRequest);

                    /** UpdateWorkerBuildIdCompatibilityRequest namespace. */
                    public namespace: string;

                    /**
                     * Must be set, the task queue to apply changes to. Because all workers on a given task queue
                     * must have the same set of workflow & activity implementations, there is no reason to specify
                     * a task queue type here.
                     */
                    public taskQueue: string;

                    /**
                     * A new build id. This operation will create a new set which will be the new overall
                     * default version for the queue, with this id as its only member. This new set is
                     * incompatible with all previous sets/versions.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: In makes perfect sense here. --)
                     */
                    public addNewBuildIdInNewDefaultSet?: (string|null);

                    /** Adds a new id to an existing compatible set, see sub-message definition for more. */
                    public addNewCompatibleBuildId?: (temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IAddNewCompatibleVersion|null);

                    /**
                     * Promote an existing set to be the current default (if it isn't already) by targeting
                     * an existing build id within it. This field's value is the extant build id.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: Names are hard. --)
                     */
                    public promoteSetByBuildId?: (string|null);

                    /**
                     * Promote an existing build id within some set to be the current default for that set.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: Within makes perfect sense here. --)
                     */
                    public promoteBuildIdWithinSet?: (string|null);

                    /**
                     * Merge two existing sets together, thus declaring all build IDs in both sets compatible
                     * with one another. The primary set's default will become the default for the merged set.
                     * This is useful if you've accidentally declared a new ID as incompatible you meant to
                     * declare as compatible. The unusual case of incomplete replication during failover could
                     * also result in a split set, which this operation can repair.
                     */
                    public mergeSets?: (temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IMergeSets|null);

                    /** UpdateWorkerBuildIdCompatibilityRequest operation. */
                    public operation?: ("addNewBuildIdInNewDefaultSet"|"addNewCompatibleBuildId"|"promoteSetByBuildId"|"promoteBuildIdWithinSet"|"mergeSets");

                    /**
                     * Creates a new UpdateWorkerBuildIdCompatibilityRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkerBuildIdCompatibilityRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkerBuildIdCompatibilityRequest): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest;

                    /**
                     * Encodes the specified UpdateWorkerBuildIdCompatibilityRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.verify|verify} messages.
                     * @param message UpdateWorkerBuildIdCompatibilityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkerBuildIdCompatibilityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkerBuildIdCompatibilityRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.verify|verify} messages.
                     * @param message UpdateWorkerBuildIdCompatibilityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkerBuildIdCompatibilityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkerBuildIdCompatibilityRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkerBuildIdCompatibilityRequest
                     * @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): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest;

                    /**
                     * Decodes an UpdateWorkerBuildIdCompatibilityRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkerBuildIdCompatibilityRequest
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest;

                    /**
                     * Creates an UpdateWorkerBuildIdCompatibilityRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkerBuildIdCompatibilityRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest;

                    /**
                     * Creates a plain object from an UpdateWorkerBuildIdCompatibilityRequest message. Also converts values to other types if specified.
                     * @param message UpdateWorkerBuildIdCompatibilityRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkerBuildIdCompatibilityRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkerBuildIdCompatibilityRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace UpdateWorkerBuildIdCompatibilityRequest {

                    /** Properties of an AddNewCompatibleVersion. */
                    interface IAddNewCompatibleVersion {

                        /** A new id to be added to an existing compatible set. */
                        newBuildId?: (string|null);

                        /**
                         * A build id which must already exist in the version sets known by the task queue. The new
                         * id will be stored in the set containing this id, marking it as compatible with
                         * the versions within.
                         */
                        existingCompatibleBuildId?: (string|null);

                        /**
                         * When set, establishes the compatible set being targeted as the overall default for the
                         * queue. If a different set was the current default, the targeted set will replace it as
                         * the new default.
                         */
                        makeSetDefault?: (boolean|null);
                    }

                    /** Represents an AddNewCompatibleVersion. */
                    class AddNewCompatibleVersion implements IAddNewCompatibleVersion {

                        /**
                         * Constructs a new AddNewCompatibleVersion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IAddNewCompatibleVersion);

                        /** A new id to be added to an existing compatible set. */
                        public newBuildId: string;

                        /**
                         * A build id which must already exist in the version sets known by the task queue. The new
                         * id will be stored in the set containing this id, marking it as compatible with
                         * the versions within.
                         */
                        public existingCompatibleBuildId: string;

                        /**
                         * When set, establishes the compatible set being targeted as the overall default for the
                         * queue. If a different set was the current default, the targeted set will replace it as
                         * the new default.
                         */
                        public makeSetDefault: boolean;

                        /**
                         * Creates a new AddNewCompatibleVersion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddNewCompatibleVersion instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IAddNewCompatibleVersion): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.AddNewCompatibleVersion;

                        /**
                         * Encodes the specified AddNewCompatibleVersion message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.AddNewCompatibleVersion.verify|verify} messages.
                         * @param message AddNewCompatibleVersion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IAddNewCompatibleVersion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddNewCompatibleVersion message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.AddNewCompatibleVersion.verify|verify} messages.
                         * @param message AddNewCompatibleVersion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IAddNewCompatibleVersion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddNewCompatibleVersion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddNewCompatibleVersion
                         * @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): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.AddNewCompatibleVersion;

                        /**
                         * Decodes an AddNewCompatibleVersion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddNewCompatibleVersion
                         * @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)): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.AddNewCompatibleVersion;

                        /**
                         * Creates an AddNewCompatibleVersion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AddNewCompatibleVersion
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.AddNewCompatibleVersion;

                        /**
                         * Creates a plain object from an AddNewCompatibleVersion message. Also converts values to other types if specified.
                         * @param message AddNewCompatibleVersion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.AddNewCompatibleVersion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddNewCompatibleVersion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AddNewCompatibleVersion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MergeSets. */
                    interface IMergeSets {

                        /** A build ID in the set whose default will become the merged set default */
                        primarySetBuildId?: (string|null);

                        /** A build ID in the set which will be merged into the primary set */
                        secondarySetBuildId?: (string|null);
                    }

                    /** Represents a MergeSets. */
                    class MergeSets implements IMergeSets {

                        /**
                         * Constructs a new MergeSets.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IMergeSets);

                        /** A build ID in the set whose default will become the merged set default */
                        public primarySetBuildId: string;

                        /** A build ID in the set which will be merged into the primary set */
                        public secondarySetBuildId: string;

                        /**
                         * Creates a new MergeSets instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MergeSets instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IMergeSets): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.MergeSets;

                        /**
                         * Encodes the specified MergeSets message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.MergeSets.verify|verify} messages.
                         * @param message MergeSets message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IMergeSets, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MergeSets message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.MergeSets.verify|verify} messages.
                         * @param message MergeSets message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.IMergeSets, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MergeSets message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MergeSets
                         * @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): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.MergeSets;

                        /**
                         * Decodes a MergeSets message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MergeSets
                         * @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)): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.MergeSets;

                        /**
                         * Creates a MergeSets message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MergeSets
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.MergeSets;

                        /**
                         * Creates a plain object from a MergeSets message. Also converts values to other types if specified.
                         * @param message MergeSets
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest.MergeSets, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MergeSets to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MergeSets
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an UpdateWorkerBuildIdCompatibilityResponse. */
                interface IUpdateWorkerBuildIdCompatibilityResponse {
                }

                /** [cleanup-wv-pre-release] */
                class UpdateWorkerBuildIdCompatibilityResponse implements IUpdateWorkerBuildIdCompatibilityResponse {

                    /**
                     * Constructs a new UpdateWorkerBuildIdCompatibilityResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkerBuildIdCompatibilityResponse);

                    /**
                     * Creates a new UpdateWorkerBuildIdCompatibilityResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkerBuildIdCompatibilityResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkerBuildIdCompatibilityResponse): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityResponse;

                    /**
                     * Encodes the specified UpdateWorkerBuildIdCompatibilityResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityResponse.verify|verify} messages.
                     * @param message UpdateWorkerBuildIdCompatibilityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkerBuildIdCompatibilityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkerBuildIdCompatibilityResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityResponse.verify|verify} messages.
                     * @param message UpdateWorkerBuildIdCompatibilityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkerBuildIdCompatibilityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkerBuildIdCompatibilityResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkerBuildIdCompatibilityResponse
                     * @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): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityResponse;

                    /**
                     * Decodes an UpdateWorkerBuildIdCompatibilityResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkerBuildIdCompatibilityResponse
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityResponse;

                    /**
                     * Creates an UpdateWorkerBuildIdCompatibilityResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkerBuildIdCompatibilityResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityResponse;

                    /**
                     * Creates a plain object from an UpdateWorkerBuildIdCompatibilityResponse message. Also converts values to other types if specified.
                     * @param message UpdateWorkerBuildIdCompatibilityResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkerBuildIdCompatibilityResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkerBuildIdCompatibilityResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetWorkerBuildIdCompatibilityRequest. */
                interface IGetWorkerBuildIdCompatibilityRequest {

                    /** GetWorkerBuildIdCompatibilityRequest namespace */
                    namespace?: (string|null);

                    /** Must be set, the task queue to interrogate about worker id compatibility. */
                    taskQueue?: (string|null);

                    /**
                     * Limits how many compatible sets will be returned. Specify 1 to only return the current
                     * default major version set. 0 returns all sets.
                     */
                    maxSets?: (number|null);
                }

                /** [cleanup-wv-pre-release] */
                class GetWorkerBuildIdCompatibilityRequest implements IGetWorkerBuildIdCompatibilityRequest {

                    /**
                     * Constructs a new GetWorkerBuildIdCompatibilityRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetWorkerBuildIdCompatibilityRequest);

                    /** GetWorkerBuildIdCompatibilityRequest namespace. */
                    public namespace: string;

                    /** Must be set, the task queue to interrogate about worker id compatibility. */
                    public taskQueue: string;

                    /**
                     * Limits how many compatible sets will be returned. Specify 1 to only return the current
                     * default major version set. 0 returns all sets.
                     */
                    public maxSets: number;

                    /**
                     * Creates a new GetWorkerBuildIdCompatibilityRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetWorkerBuildIdCompatibilityRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetWorkerBuildIdCompatibilityRequest): temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest;

                    /**
                     * Encodes the specified GetWorkerBuildIdCompatibilityRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest.verify|verify} messages.
                     * @param message GetWorkerBuildIdCompatibilityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetWorkerBuildIdCompatibilityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetWorkerBuildIdCompatibilityRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest.verify|verify} messages.
                     * @param message GetWorkerBuildIdCompatibilityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetWorkerBuildIdCompatibilityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetWorkerBuildIdCompatibilityRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetWorkerBuildIdCompatibilityRequest
                     * @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): temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest;

                    /**
                     * Decodes a GetWorkerBuildIdCompatibilityRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetWorkerBuildIdCompatibilityRequest
                     * @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)): temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest;

                    /**
                     * Creates a GetWorkerBuildIdCompatibilityRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetWorkerBuildIdCompatibilityRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest;

                    /**
                     * Creates a plain object from a GetWorkerBuildIdCompatibilityRequest message. Also converts values to other types if specified.
                     * @param message GetWorkerBuildIdCompatibilityRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetWorkerBuildIdCompatibilityRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetWorkerBuildIdCompatibilityRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetWorkerBuildIdCompatibilityResponse. */
                interface IGetWorkerBuildIdCompatibilityResponse {

                    /**
                     * Major version sets, in order from oldest to newest. The last element of the list will always
                     * be the current default major version. IE: New workflows will target the most recent version
                     * in that version set.
                     *
                     * There may be fewer sets returned than exist, if the request chose to limit this response.
                     */
                    majorVersionSets?: (temporal.api.taskqueue.v1.ICompatibleVersionSet[]|null);
                }

                /** [cleanup-wv-pre-release] */
                class GetWorkerBuildIdCompatibilityResponse implements IGetWorkerBuildIdCompatibilityResponse {

                    /**
                     * Constructs a new GetWorkerBuildIdCompatibilityResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetWorkerBuildIdCompatibilityResponse);

                    /**
                     * Major version sets, in order from oldest to newest. The last element of the list will always
                     * be the current default major version. IE: New workflows will target the most recent version
                     * in that version set.
                     *
                     * There may be fewer sets returned than exist, if the request chose to limit this response.
                     */
                    public majorVersionSets: temporal.api.taskqueue.v1.ICompatibleVersionSet[];

                    /**
                     * Creates a new GetWorkerBuildIdCompatibilityResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetWorkerBuildIdCompatibilityResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetWorkerBuildIdCompatibilityResponse): temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse;

                    /**
                     * Encodes the specified GetWorkerBuildIdCompatibilityResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse.verify|verify} messages.
                     * @param message GetWorkerBuildIdCompatibilityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetWorkerBuildIdCompatibilityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetWorkerBuildIdCompatibilityResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse.verify|verify} messages.
                     * @param message GetWorkerBuildIdCompatibilityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetWorkerBuildIdCompatibilityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetWorkerBuildIdCompatibilityResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetWorkerBuildIdCompatibilityResponse
                     * @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): temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse;

                    /**
                     * Decodes a GetWorkerBuildIdCompatibilityResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetWorkerBuildIdCompatibilityResponse
                     * @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)): temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse;

                    /**
                     * Creates a GetWorkerBuildIdCompatibilityResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetWorkerBuildIdCompatibilityResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse;

                    /**
                     * Creates a plain object from a GetWorkerBuildIdCompatibilityResponse message. Also converts values to other types if specified.
                     * @param message GetWorkerBuildIdCompatibilityResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetWorkerBuildIdCompatibilityResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetWorkerBuildIdCompatibilityResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateWorkerVersioningRulesRequest. */
                interface IUpdateWorkerVersioningRulesRequest {

                    /** UpdateWorkerVersioningRulesRequest namespace */
                    namespace?: (string|null);

                    /** UpdateWorkerVersioningRulesRequest taskQueue */
                    taskQueue?: (string|null);

                    /**
                     * A valid conflict_token can be taken from the previous
                     * ListWorkerVersioningRulesResponse or UpdateWorkerVersioningRulesResponse.
                     * An invalid token will cause this request to fail, ensuring that if the rules
                     * for this Task Queue have been modified between the previous and current
                     * operation, the request will fail instead of causing an unpredictable mutation.
                     */
                    conflictToken?: (Uint8Array|null);

                    /** UpdateWorkerVersioningRulesRequest insertAssignmentRule */
                    insertAssignmentRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IInsertBuildIdAssignmentRule|null);

                    /** UpdateWorkerVersioningRulesRequest replaceAssignmentRule */
                    replaceAssignmentRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceBuildIdAssignmentRule|null);

                    /** UpdateWorkerVersioningRulesRequest deleteAssignmentRule */
                    deleteAssignmentRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteBuildIdAssignmentRule|null);

                    /** UpdateWorkerVersioningRulesRequest addCompatibleRedirectRule */
                    addCompatibleRedirectRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IAddCompatibleBuildIdRedirectRule|null);

                    /** UpdateWorkerVersioningRulesRequest replaceCompatibleRedirectRule */
                    replaceCompatibleRedirectRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceCompatibleBuildIdRedirectRule|null);

                    /** UpdateWorkerVersioningRulesRequest deleteCompatibleRedirectRule */
                    deleteCompatibleRedirectRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteCompatibleBuildIdRedirectRule|null);

                    /** UpdateWorkerVersioningRulesRequest commitBuildId */
                    commitBuildId?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ICommitBuildId|null);
                }

                /**
                 * (-- api-linter: core::0134::request-mask-required=disabled
                 * aip.dev/not-precedent: UpdateNamespace RPC doesn't follow Google API format. --)
                 * (-- api-linter: core::0134::request-resource-required=disabled
                 * aip.dev/not-precedent: GetWorkerBuildIdCompatibilityRequest RPC doesn't follow Google API format. --)
                 * [cleanup-wv-pre-release]
                 */
                class UpdateWorkerVersioningRulesRequest implements IUpdateWorkerVersioningRulesRequest {

                    /**
                     * Constructs a new UpdateWorkerVersioningRulesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkerVersioningRulesRequest);

                    /** UpdateWorkerVersioningRulesRequest namespace. */
                    public namespace: string;

                    /** UpdateWorkerVersioningRulesRequest taskQueue. */
                    public taskQueue: string;

                    /**
                     * A valid conflict_token can be taken from the previous
                     * ListWorkerVersioningRulesResponse or UpdateWorkerVersioningRulesResponse.
                     * An invalid token will cause this request to fail, ensuring that if the rules
                     * for this Task Queue have been modified between the previous and current
                     * operation, the request will fail instead of causing an unpredictable mutation.
                     */
                    public conflictToken: Uint8Array;

                    /** UpdateWorkerVersioningRulesRequest insertAssignmentRule. */
                    public insertAssignmentRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IInsertBuildIdAssignmentRule|null);

                    /** UpdateWorkerVersioningRulesRequest replaceAssignmentRule. */
                    public replaceAssignmentRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceBuildIdAssignmentRule|null);

                    /** UpdateWorkerVersioningRulesRequest deleteAssignmentRule. */
                    public deleteAssignmentRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteBuildIdAssignmentRule|null);

                    /** UpdateWorkerVersioningRulesRequest addCompatibleRedirectRule. */
                    public addCompatibleRedirectRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IAddCompatibleBuildIdRedirectRule|null);

                    /** UpdateWorkerVersioningRulesRequest replaceCompatibleRedirectRule. */
                    public replaceCompatibleRedirectRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceCompatibleBuildIdRedirectRule|null);

                    /** UpdateWorkerVersioningRulesRequest deleteCompatibleRedirectRule. */
                    public deleteCompatibleRedirectRule?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteCompatibleBuildIdRedirectRule|null);

                    /** UpdateWorkerVersioningRulesRequest commitBuildId. */
                    public commitBuildId?: (temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ICommitBuildId|null);

                    /** UpdateWorkerVersioningRulesRequest operation. */
                    public operation?: ("insertAssignmentRule"|"replaceAssignmentRule"|"deleteAssignmentRule"|"addCompatibleRedirectRule"|"replaceCompatibleRedirectRule"|"deleteCompatibleRedirectRule"|"commitBuildId");

                    /**
                     * Creates a new UpdateWorkerVersioningRulesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkerVersioningRulesRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkerVersioningRulesRequest): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest;

                    /**
                     * Encodes the specified UpdateWorkerVersioningRulesRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.verify|verify} messages.
                     * @param message UpdateWorkerVersioningRulesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkerVersioningRulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkerVersioningRulesRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.verify|verify} messages.
                     * @param message UpdateWorkerVersioningRulesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkerVersioningRulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkerVersioningRulesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkerVersioningRulesRequest
                     * @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): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest;

                    /**
                     * Decodes an UpdateWorkerVersioningRulesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkerVersioningRulesRequest
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest;

                    /**
                     * Creates an UpdateWorkerVersioningRulesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkerVersioningRulesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest;

                    /**
                     * Creates a plain object from an UpdateWorkerVersioningRulesRequest message. Also converts values to other types if specified.
                     * @param message UpdateWorkerVersioningRulesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkerVersioningRulesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkerVersioningRulesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace UpdateWorkerVersioningRulesRequest {

                    /** Properties of an InsertBuildIdAssignmentRule. */
                    interface IInsertBuildIdAssignmentRule {

                        /**
                         * Use this option to insert the rule in a particular index. By
                         * default, the new rule is inserted at the beginning of the list
                         * (index 0). If the given index is too larger the rule will be
                         * inserted at the end of the list.
                         */
                        ruleIndex?: (number|null);

                        /** InsertBuildIdAssignmentRule rule */
                        rule?: (temporal.api.taskqueue.v1.IBuildIdAssignmentRule|null);
                    }

                    /**
                     * Inserts the rule to the list of assignment rules for this Task Queue.
                     * The rules are evaluated in order, starting from index 0. The first
                     * applicable rule will be applied and the rest will be ignored.
                     */
                    class InsertBuildIdAssignmentRule implements IInsertBuildIdAssignmentRule {

                        /**
                         * Constructs a new InsertBuildIdAssignmentRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IInsertBuildIdAssignmentRule);

                        /**
                         * Use this option to insert the rule in a particular index. By
                         * default, the new rule is inserted at the beginning of the list
                         * (index 0). If the given index is too larger the rule will be
                         * inserted at the end of the list.
                         */
                        public ruleIndex: number;

                        /** InsertBuildIdAssignmentRule rule. */
                        public rule?: (temporal.api.taskqueue.v1.IBuildIdAssignmentRule|null);

                        /**
                         * Creates a new InsertBuildIdAssignmentRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InsertBuildIdAssignmentRule instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IInsertBuildIdAssignmentRule): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.InsertBuildIdAssignmentRule;

                        /**
                         * Encodes the specified InsertBuildIdAssignmentRule message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.InsertBuildIdAssignmentRule.verify|verify} messages.
                         * @param message InsertBuildIdAssignmentRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IInsertBuildIdAssignmentRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InsertBuildIdAssignmentRule message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.InsertBuildIdAssignmentRule.verify|verify} messages.
                         * @param message InsertBuildIdAssignmentRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IInsertBuildIdAssignmentRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InsertBuildIdAssignmentRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InsertBuildIdAssignmentRule
                         * @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): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.InsertBuildIdAssignmentRule;

                        /**
                         * Decodes an InsertBuildIdAssignmentRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InsertBuildIdAssignmentRule
                         * @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)): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.InsertBuildIdAssignmentRule;

                        /**
                         * Creates an InsertBuildIdAssignmentRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InsertBuildIdAssignmentRule
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.InsertBuildIdAssignmentRule;

                        /**
                         * Creates a plain object from an InsertBuildIdAssignmentRule message. Also converts values to other types if specified.
                         * @param message InsertBuildIdAssignmentRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.InsertBuildIdAssignmentRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InsertBuildIdAssignmentRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InsertBuildIdAssignmentRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ReplaceBuildIdAssignmentRule. */
                    interface IReplaceBuildIdAssignmentRule {

                        /** ReplaceBuildIdAssignmentRule ruleIndex */
                        ruleIndex?: (number|null);

                        /** ReplaceBuildIdAssignmentRule rule */
                        rule?: (temporal.api.taskqueue.v1.IBuildIdAssignmentRule|null);

                        /**
                         * By default presence of one unconditional rule is enforced, otherwise
                         * the replace operation will be rejected. Set `force` to true to
                         * bypass this validation. An unconditional assignment rule:
                         * - Has no hint filter
                         * - Has no ramp
                         */
                        force?: (boolean|null);
                    }

                    /** Replaces the assignment rule at a given index. */
                    class ReplaceBuildIdAssignmentRule implements IReplaceBuildIdAssignmentRule {

                        /**
                         * Constructs a new ReplaceBuildIdAssignmentRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceBuildIdAssignmentRule);

                        /** ReplaceBuildIdAssignmentRule ruleIndex. */
                        public ruleIndex: number;

                        /** ReplaceBuildIdAssignmentRule rule. */
                        public rule?: (temporal.api.taskqueue.v1.IBuildIdAssignmentRule|null);

                        /**
                         * By default presence of one unconditional rule is enforced, otherwise
                         * the replace operation will be rejected. Set `force` to true to
                         * bypass this validation. An unconditional assignment rule:
                         * - Has no hint filter
                         * - Has no ramp
                         */
                        public force: boolean;

                        /**
                         * Creates a new ReplaceBuildIdAssignmentRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReplaceBuildIdAssignmentRule instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceBuildIdAssignmentRule): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceBuildIdAssignmentRule;

                        /**
                         * Encodes the specified ReplaceBuildIdAssignmentRule message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceBuildIdAssignmentRule.verify|verify} messages.
                         * @param message ReplaceBuildIdAssignmentRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceBuildIdAssignmentRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReplaceBuildIdAssignmentRule message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceBuildIdAssignmentRule.verify|verify} messages.
                         * @param message ReplaceBuildIdAssignmentRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceBuildIdAssignmentRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReplaceBuildIdAssignmentRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReplaceBuildIdAssignmentRule
                         * @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): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceBuildIdAssignmentRule;

                        /**
                         * Decodes a ReplaceBuildIdAssignmentRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReplaceBuildIdAssignmentRule
                         * @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)): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceBuildIdAssignmentRule;

                        /**
                         * Creates a ReplaceBuildIdAssignmentRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReplaceBuildIdAssignmentRule
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceBuildIdAssignmentRule;

                        /**
                         * Creates a plain object from a ReplaceBuildIdAssignmentRule message. Also converts values to other types if specified.
                         * @param message ReplaceBuildIdAssignmentRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceBuildIdAssignmentRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReplaceBuildIdAssignmentRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReplaceBuildIdAssignmentRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteBuildIdAssignmentRule. */
                    interface IDeleteBuildIdAssignmentRule {

                        /** DeleteBuildIdAssignmentRule ruleIndex */
                        ruleIndex?: (number|null);

                        /**
                         * By default presence of one unconditional rule is enforced, otherwise
                         * the delete operation will be rejected. Set `force` to true to
                         * bypass this validation. An unconditional assignment rule:
                         * - Has no hint filter
                         * - Has no ramp
                         */
                        force?: (boolean|null);
                    }

                    /** Represents a DeleteBuildIdAssignmentRule. */
                    class DeleteBuildIdAssignmentRule implements IDeleteBuildIdAssignmentRule {

                        /**
                         * Constructs a new DeleteBuildIdAssignmentRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteBuildIdAssignmentRule);

                        /** DeleteBuildIdAssignmentRule ruleIndex. */
                        public ruleIndex: number;

                        /**
                         * By default presence of one unconditional rule is enforced, otherwise
                         * the delete operation will be rejected. Set `force` to true to
                         * bypass this validation. An unconditional assignment rule:
                         * - Has no hint filter
                         * - Has no ramp
                         */
                        public force: boolean;

                        /**
                         * Creates a new DeleteBuildIdAssignmentRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteBuildIdAssignmentRule instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteBuildIdAssignmentRule): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteBuildIdAssignmentRule;

                        /**
                         * Encodes the specified DeleteBuildIdAssignmentRule message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteBuildIdAssignmentRule.verify|verify} messages.
                         * @param message DeleteBuildIdAssignmentRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteBuildIdAssignmentRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteBuildIdAssignmentRule message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteBuildIdAssignmentRule.verify|verify} messages.
                         * @param message DeleteBuildIdAssignmentRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteBuildIdAssignmentRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteBuildIdAssignmentRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteBuildIdAssignmentRule
                         * @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): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteBuildIdAssignmentRule;

                        /**
                         * Decodes a DeleteBuildIdAssignmentRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteBuildIdAssignmentRule
                         * @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)): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteBuildIdAssignmentRule;

                        /**
                         * Creates a DeleteBuildIdAssignmentRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteBuildIdAssignmentRule
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteBuildIdAssignmentRule;

                        /**
                         * Creates a plain object from a DeleteBuildIdAssignmentRule message. Also converts values to other types if specified.
                         * @param message DeleteBuildIdAssignmentRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteBuildIdAssignmentRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteBuildIdAssignmentRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteBuildIdAssignmentRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AddCompatibleBuildIdRedirectRule. */
                    interface IAddCompatibleBuildIdRedirectRule {

                        /** AddCompatibleBuildIdRedirectRule rule */
                        rule?: (temporal.api.taskqueue.v1.ICompatibleBuildIdRedirectRule|null);
                    }

                    /**
                     * Adds the rule to the list of redirect rules for this Task Queue. There
                     * can be at most one redirect rule for each distinct Source Build ID.
                     */
                    class AddCompatibleBuildIdRedirectRule implements IAddCompatibleBuildIdRedirectRule {

                        /**
                         * Constructs a new AddCompatibleBuildIdRedirectRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IAddCompatibleBuildIdRedirectRule);

                        /** AddCompatibleBuildIdRedirectRule rule. */
                        public rule?: (temporal.api.taskqueue.v1.ICompatibleBuildIdRedirectRule|null);

                        /**
                         * Creates a new AddCompatibleBuildIdRedirectRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddCompatibleBuildIdRedirectRule instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IAddCompatibleBuildIdRedirectRule): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.AddCompatibleBuildIdRedirectRule;

                        /**
                         * Encodes the specified AddCompatibleBuildIdRedirectRule message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.AddCompatibleBuildIdRedirectRule.verify|verify} messages.
                         * @param message AddCompatibleBuildIdRedirectRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IAddCompatibleBuildIdRedirectRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddCompatibleBuildIdRedirectRule message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.AddCompatibleBuildIdRedirectRule.verify|verify} messages.
                         * @param message AddCompatibleBuildIdRedirectRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IAddCompatibleBuildIdRedirectRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddCompatibleBuildIdRedirectRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddCompatibleBuildIdRedirectRule
                         * @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): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.AddCompatibleBuildIdRedirectRule;

                        /**
                         * Decodes an AddCompatibleBuildIdRedirectRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddCompatibleBuildIdRedirectRule
                         * @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)): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.AddCompatibleBuildIdRedirectRule;

                        /**
                         * Creates an AddCompatibleBuildIdRedirectRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AddCompatibleBuildIdRedirectRule
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.AddCompatibleBuildIdRedirectRule;

                        /**
                         * Creates a plain object from an AddCompatibleBuildIdRedirectRule message. Also converts values to other types if specified.
                         * @param message AddCompatibleBuildIdRedirectRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.AddCompatibleBuildIdRedirectRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddCompatibleBuildIdRedirectRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AddCompatibleBuildIdRedirectRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ReplaceCompatibleBuildIdRedirectRule. */
                    interface IReplaceCompatibleBuildIdRedirectRule {

                        /** ReplaceCompatibleBuildIdRedirectRule rule */
                        rule?: (temporal.api.taskqueue.v1.ICompatibleBuildIdRedirectRule|null);
                    }

                    /** Replaces the routing rule with the given source Build ID. */
                    class ReplaceCompatibleBuildIdRedirectRule implements IReplaceCompatibleBuildIdRedirectRule {

                        /**
                         * Constructs a new ReplaceCompatibleBuildIdRedirectRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceCompatibleBuildIdRedirectRule);

                        /** ReplaceCompatibleBuildIdRedirectRule rule. */
                        public rule?: (temporal.api.taskqueue.v1.ICompatibleBuildIdRedirectRule|null);

                        /**
                         * Creates a new ReplaceCompatibleBuildIdRedirectRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReplaceCompatibleBuildIdRedirectRule instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceCompatibleBuildIdRedirectRule): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceCompatibleBuildIdRedirectRule;

                        /**
                         * Encodes the specified ReplaceCompatibleBuildIdRedirectRule message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceCompatibleBuildIdRedirectRule.verify|verify} messages.
                         * @param message ReplaceCompatibleBuildIdRedirectRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceCompatibleBuildIdRedirectRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReplaceCompatibleBuildIdRedirectRule message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceCompatibleBuildIdRedirectRule.verify|verify} messages.
                         * @param message ReplaceCompatibleBuildIdRedirectRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IReplaceCompatibleBuildIdRedirectRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReplaceCompatibleBuildIdRedirectRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReplaceCompatibleBuildIdRedirectRule
                         * @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): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceCompatibleBuildIdRedirectRule;

                        /**
                         * Decodes a ReplaceCompatibleBuildIdRedirectRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReplaceCompatibleBuildIdRedirectRule
                         * @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)): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceCompatibleBuildIdRedirectRule;

                        /**
                         * Creates a ReplaceCompatibleBuildIdRedirectRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReplaceCompatibleBuildIdRedirectRule
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceCompatibleBuildIdRedirectRule;

                        /**
                         * Creates a plain object from a ReplaceCompatibleBuildIdRedirectRule message. Also converts values to other types if specified.
                         * @param message ReplaceCompatibleBuildIdRedirectRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ReplaceCompatibleBuildIdRedirectRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReplaceCompatibleBuildIdRedirectRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReplaceCompatibleBuildIdRedirectRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteCompatibleBuildIdRedirectRule. */
                    interface IDeleteCompatibleBuildIdRedirectRule {

                        /** DeleteCompatibleBuildIdRedirectRule sourceBuildId */
                        sourceBuildId?: (string|null);
                    }

                    /** Represents a DeleteCompatibleBuildIdRedirectRule. */
                    class DeleteCompatibleBuildIdRedirectRule implements IDeleteCompatibleBuildIdRedirectRule {

                        /**
                         * Constructs a new DeleteCompatibleBuildIdRedirectRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteCompatibleBuildIdRedirectRule);

                        /** DeleteCompatibleBuildIdRedirectRule sourceBuildId. */
                        public sourceBuildId: string;

                        /**
                         * Creates a new DeleteCompatibleBuildIdRedirectRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteCompatibleBuildIdRedirectRule instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteCompatibleBuildIdRedirectRule): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteCompatibleBuildIdRedirectRule;

                        /**
                         * Encodes the specified DeleteCompatibleBuildIdRedirectRule message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteCompatibleBuildIdRedirectRule.verify|verify} messages.
                         * @param message DeleteCompatibleBuildIdRedirectRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteCompatibleBuildIdRedirectRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteCompatibleBuildIdRedirectRule message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteCompatibleBuildIdRedirectRule.verify|verify} messages.
                         * @param message DeleteCompatibleBuildIdRedirectRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.IDeleteCompatibleBuildIdRedirectRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteCompatibleBuildIdRedirectRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteCompatibleBuildIdRedirectRule
                         * @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): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteCompatibleBuildIdRedirectRule;

                        /**
                         * Decodes a DeleteCompatibleBuildIdRedirectRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteCompatibleBuildIdRedirectRule
                         * @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)): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteCompatibleBuildIdRedirectRule;

                        /**
                         * Creates a DeleteCompatibleBuildIdRedirectRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteCompatibleBuildIdRedirectRule
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteCompatibleBuildIdRedirectRule;

                        /**
                         * Creates a plain object from a DeleteCompatibleBuildIdRedirectRule message. Also converts values to other types if specified.
                         * @param message DeleteCompatibleBuildIdRedirectRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.DeleteCompatibleBuildIdRedirectRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteCompatibleBuildIdRedirectRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteCompatibleBuildIdRedirectRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CommitBuildId. */
                    interface ICommitBuildId {

                        /** CommitBuildId targetBuildId */
                        targetBuildId?: (string|null);

                        /**
                         * To prevent committing invalid Build IDs, we reject the request if no
                         * pollers has been seen recently for this Build ID. Use the `force`
                         * option to disable this validation.
                         */
                        force?: (boolean|null);
                    }

                    /**
                     * This command is intended to be used to complete the rollout of a Build
                     * ID and cleanup unnecessary rules possibly created during a gradual
                     * rollout. Specifically, this command will make the following changes
                     * atomically:
                     * 1. Adds an assignment rule (with full ramp) for the target Build ID at
                     * the end of the list.
                     * 2. Removes all previously added assignment rules to the given target
                     * Build ID (if any).
                     * 3. Removes any fully-ramped assignment rule for other Build IDs.
                     */
                    class CommitBuildId implements ICommitBuildId {

                        /**
                         * Constructs a new CommitBuildId.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ICommitBuildId);

                        /** CommitBuildId targetBuildId. */
                        public targetBuildId: string;

                        /**
                         * To prevent committing invalid Build IDs, we reject the request if no
                         * pollers has been seen recently for this Build ID. Use the `force`
                         * option to disable this validation.
                         */
                        public force: boolean;

                        /**
                         * Creates a new CommitBuildId instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CommitBuildId instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ICommitBuildId): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.CommitBuildId;

                        /**
                         * Encodes the specified CommitBuildId message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.CommitBuildId.verify|verify} messages.
                         * @param message CommitBuildId message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ICommitBuildId, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CommitBuildId message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.CommitBuildId.verify|verify} messages.
                         * @param message CommitBuildId message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.ICommitBuildId, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CommitBuildId message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CommitBuildId
                         * @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): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.CommitBuildId;

                        /**
                         * Decodes a CommitBuildId message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CommitBuildId
                         * @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)): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.CommitBuildId;

                        /**
                         * Creates a CommitBuildId message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CommitBuildId
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.CommitBuildId;

                        /**
                         * Creates a plain object from a CommitBuildId message. Also converts values to other types if specified.
                         * @param message CommitBuildId
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest.CommitBuildId, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CommitBuildId to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CommitBuildId
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an UpdateWorkerVersioningRulesResponse. */
                interface IUpdateWorkerVersioningRulesResponse {

                    /** UpdateWorkerVersioningRulesResponse assignmentRules */
                    assignmentRules?: (temporal.api.taskqueue.v1.ITimestampedBuildIdAssignmentRule[]|null);

                    /** UpdateWorkerVersioningRulesResponse compatibleRedirectRules */
                    compatibleRedirectRules?: (temporal.api.taskqueue.v1.ITimestampedCompatibleBuildIdRedirectRule[]|null);

                    /**
                     * This value can be passed back to UpdateWorkerVersioningRulesRequest to
                     * ensure that the rules were not modified between the two updates, which
                     * could lead to lost updates and other confusion.
                     */
                    conflictToken?: (Uint8Array|null);
                }

                /** [cleanup-wv-pre-release] */
                class UpdateWorkerVersioningRulesResponse implements IUpdateWorkerVersioningRulesResponse {

                    /**
                     * Constructs a new UpdateWorkerVersioningRulesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkerVersioningRulesResponse);

                    /** UpdateWorkerVersioningRulesResponse assignmentRules. */
                    public assignmentRules: temporal.api.taskqueue.v1.ITimestampedBuildIdAssignmentRule[];

                    /** UpdateWorkerVersioningRulesResponse compatibleRedirectRules. */
                    public compatibleRedirectRules: temporal.api.taskqueue.v1.ITimestampedCompatibleBuildIdRedirectRule[];

                    /**
                     * This value can be passed back to UpdateWorkerVersioningRulesRequest to
                     * ensure that the rules were not modified between the two updates, which
                     * could lead to lost updates and other confusion.
                     */
                    public conflictToken: Uint8Array;

                    /**
                     * Creates a new UpdateWorkerVersioningRulesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkerVersioningRulesResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkerVersioningRulesResponse): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse;

                    /**
                     * Encodes the specified UpdateWorkerVersioningRulesResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse.verify|verify} messages.
                     * @param message UpdateWorkerVersioningRulesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkerVersioningRulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkerVersioningRulesResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse.verify|verify} messages.
                     * @param message UpdateWorkerVersioningRulesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkerVersioningRulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkerVersioningRulesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkerVersioningRulesResponse
                     * @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): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse;

                    /**
                     * Decodes an UpdateWorkerVersioningRulesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkerVersioningRulesResponse
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse;

                    /**
                     * Creates an UpdateWorkerVersioningRulesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkerVersioningRulesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse;

                    /**
                     * Creates a plain object from an UpdateWorkerVersioningRulesResponse message. Also converts values to other types if specified.
                     * @param message UpdateWorkerVersioningRulesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkerVersioningRulesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkerVersioningRulesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetWorkerVersioningRulesRequest. */
                interface IGetWorkerVersioningRulesRequest {

                    /** GetWorkerVersioningRulesRequest namespace */
                    namespace?: (string|null);

                    /** GetWorkerVersioningRulesRequest taskQueue */
                    taskQueue?: (string|null);
                }

                /** [cleanup-wv-pre-release] */
                class GetWorkerVersioningRulesRequest implements IGetWorkerVersioningRulesRequest {

                    /**
                     * Constructs a new GetWorkerVersioningRulesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetWorkerVersioningRulesRequest);

                    /** GetWorkerVersioningRulesRequest namespace. */
                    public namespace: string;

                    /** GetWorkerVersioningRulesRequest taskQueue. */
                    public taskQueue: string;

                    /**
                     * Creates a new GetWorkerVersioningRulesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetWorkerVersioningRulesRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetWorkerVersioningRulesRequest): temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest;

                    /**
                     * Encodes the specified GetWorkerVersioningRulesRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest.verify|verify} messages.
                     * @param message GetWorkerVersioningRulesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetWorkerVersioningRulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetWorkerVersioningRulesRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest.verify|verify} messages.
                     * @param message GetWorkerVersioningRulesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetWorkerVersioningRulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetWorkerVersioningRulesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetWorkerVersioningRulesRequest
                     * @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): temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest;

                    /**
                     * Decodes a GetWorkerVersioningRulesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetWorkerVersioningRulesRequest
                     * @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)): temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest;

                    /**
                     * Creates a GetWorkerVersioningRulesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetWorkerVersioningRulesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest;

                    /**
                     * Creates a plain object from a GetWorkerVersioningRulesRequest message. Also converts values to other types if specified.
                     * @param message GetWorkerVersioningRulesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetWorkerVersioningRulesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetWorkerVersioningRulesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetWorkerVersioningRulesResponse. */
                interface IGetWorkerVersioningRulesResponse {

                    /** GetWorkerVersioningRulesResponse assignmentRules */
                    assignmentRules?: (temporal.api.taskqueue.v1.ITimestampedBuildIdAssignmentRule[]|null);

                    /** GetWorkerVersioningRulesResponse compatibleRedirectRules */
                    compatibleRedirectRules?: (temporal.api.taskqueue.v1.ITimestampedCompatibleBuildIdRedirectRule[]|null);

                    /**
                     * This value can be passed back to UpdateWorkerVersioningRulesRequest to
                     * ensure that the rules were not modified between this List and the Update,
                     * which could lead to lost updates and other confusion.
                     */
                    conflictToken?: (Uint8Array|null);
                }

                /** [cleanup-wv-pre-release] */
                class GetWorkerVersioningRulesResponse implements IGetWorkerVersioningRulesResponse {

                    /**
                     * Constructs a new GetWorkerVersioningRulesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetWorkerVersioningRulesResponse);

                    /** GetWorkerVersioningRulesResponse assignmentRules. */
                    public assignmentRules: temporal.api.taskqueue.v1.ITimestampedBuildIdAssignmentRule[];

                    /** GetWorkerVersioningRulesResponse compatibleRedirectRules. */
                    public compatibleRedirectRules: temporal.api.taskqueue.v1.ITimestampedCompatibleBuildIdRedirectRule[];

                    /**
                     * This value can be passed back to UpdateWorkerVersioningRulesRequest to
                     * ensure that the rules were not modified between this List and the Update,
                     * which could lead to lost updates and other confusion.
                     */
                    public conflictToken: Uint8Array;

                    /**
                     * Creates a new GetWorkerVersioningRulesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetWorkerVersioningRulesResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetWorkerVersioningRulesResponse): temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse;

                    /**
                     * Encodes the specified GetWorkerVersioningRulesResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse.verify|verify} messages.
                     * @param message GetWorkerVersioningRulesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetWorkerVersioningRulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetWorkerVersioningRulesResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse.verify|verify} messages.
                     * @param message GetWorkerVersioningRulesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetWorkerVersioningRulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetWorkerVersioningRulesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetWorkerVersioningRulesResponse
                     * @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): temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse;

                    /**
                     * Decodes a GetWorkerVersioningRulesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetWorkerVersioningRulesResponse
                     * @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)): temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse;

                    /**
                     * Creates a GetWorkerVersioningRulesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetWorkerVersioningRulesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse;

                    /**
                     * Creates a plain object from a GetWorkerVersioningRulesResponse message. Also converts values to other types if specified.
                     * @param message GetWorkerVersioningRulesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetWorkerVersioningRulesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetWorkerVersioningRulesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetWorkerTaskReachabilityRequest. */
                interface IGetWorkerTaskReachabilityRequest {

                    /** GetWorkerTaskReachabilityRequest namespace */
                    namespace?: (string|null);

                    /**
                     * Build ids to retrieve reachability for. An empty string will be interpreted as an unversioned worker.
                     * The number of build ids that can be queried in a single API call is limited.
                     * Open source users can adjust this limit by setting the server's dynamic config value for
                     * `limit.reachabilityQueryBuildIds` with the caveat that this call can strain the visibility store.
                     */
                    buildIds?: (string[]|null);

                    /**
                     * Task queues to retrieve reachability for. Leave this empty to query for all task queues associated with given
                     * build ids in the namespace.
                     * Must specify at least one task queue if querying for an unversioned worker.
                     * The number of task queues that the server will fetch reachability information for is limited.
                     * See the `GetWorkerTaskReachabilityResponse` documentation for more information.
                     */
                    taskQueues?: (string[]|null);

                    /**
                     * Type of reachability to query for.
                     * `TASK_REACHABILITY_NEW_WORKFLOWS` is always returned in the response.
                     * Use `TASK_REACHABILITY_EXISTING_WORKFLOWS` if your application needs to respond to queries on closed workflows.
                     * Otherwise, use `TASK_REACHABILITY_OPEN_WORKFLOWS`. Default is `TASK_REACHABILITY_EXISTING_WORKFLOWS` if left
                     * unspecified.
                     * See the TaskReachability docstring for information about each enum variant.
                     */
                    reachability?: (temporal.api.enums.v1.TaskReachability|null);
                }

                /**
                 * [cleanup-wv-pre-release]
                 * Deprecated. Use `DescribeTaskQueue`.
                 */
                class GetWorkerTaskReachabilityRequest implements IGetWorkerTaskReachabilityRequest {

                    /**
                     * Constructs a new GetWorkerTaskReachabilityRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetWorkerTaskReachabilityRequest);

                    /** GetWorkerTaskReachabilityRequest namespace. */
                    public namespace: string;

                    /**
                     * Build ids to retrieve reachability for. An empty string will be interpreted as an unversioned worker.
                     * The number of build ids that can be queried in a single API call is limited.
                     * Open source users can adjust this limit by setting the server's dynamic config value for
                     * `limit.reachabilityQueryBuildIds` with the caveat that this call can strain the visibility store.
                     */
                    public buildIds: string[];

                    /**
                     * Task queues to retrieve reachability for. Leave this empty to query for all task queues associated with given
                     * build ids in the namespace.
                     * Must specify at least one task queue if querying for an unversioned worker.
                     * The number of task queues that the server will fetch reachability information for is limited.
                     * See the `GetWorkerTaskReachabilityResponse` documentation for more information.
                     */
                    public taskQueues: string[];

                    /**
                     * Type of reachability to query for.
                     * `TASK_REACHABILITY_NEW_WORKFLOWS` is always returned in the response.
                     * Use `TASK_REACHABILITY_EXISTING_WORKFLOWS` if your application needs to respond to queries on closed workflows.
                     * Otherwise, use `TASK_REACHABILITY_OPEN_WORKFLOWS`. Default is `TASK_REACHABILITY_EXISTING_WORKFLOWS` if left
                     * unspecified.
                     * See the TaskReachability docstring for information about each enum variant.
                     */
                    public reachability: temporal.api.enums.v1.TaskReachability;

                    /**
                     * Creates a new GetWorkerTaskReachabilityRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetWorkerTaskReachabilityRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetWorkerTaskReachabilityRequest): temporal.api.workflowservice.v1.GetWorkerTaskReachabilityRequest;

                    /**
                     * Encodes the specified GetWorkerTaskReachabilityRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerTaskReachabilityRequest.verify|verify} messages.
                     * @param message GetWorkerTaskReachabilityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetWorkerTaskReachabilityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetWorkerTaskReachabilityRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerTaskReachabilityRequest.verify|verify} messages.
                     * @param message GetWorkerTaskReachabilityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetWorkerTaskReachabilityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetWorkerTaskReachabilityRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetWorkerTaskReachabilityRequest
                     * @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): temporal.api.workflowservice.v1.GetWorkerTaskReachabilityRequest;

                    /**
                     * Decodes a GetWorkerTaskReachabilityRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetWorkerTaskReachabilityRequest
                     * @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)): temporal.api.workflowservice.v1.GetWorkerTaskReachabilityRequest;

                    /**
                     * Creates a GetWorkerTaskReachabilityRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetWorkerTaskReachabilityRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetWorkerTaskReachabilityRequest;

                    /**
                     * Creates a plain object from a GetWorkerTaskReachabilityRequest message. Also converts values to other types if specified.
                     * @param message GetWorkerTaskReachabilityRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetWorkerTaskReachabilityRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetWorkerTaskReachabilityRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetWorkerTaskReachabilityRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetWorkerTaskReachabilityResponse. */
                interface IGetWorkerTaskReachabilityResponse {

                    /**
                     * Task reachability, broken down by build id and then task queue.
                     * When requesting a large number of task queues or all task queues associated with the given build ids in a
                     * namespace, all task queues will be listed in the response but some of them may not contain reachability
                     * information due to a server enforced limit. When reaching the limit, task queues that reachability information
                     * could not be retrieved for will be marked with a single TASK_REACHABILITY_UNSPECIFIED entry. The caller may issue
                     * another call to get the reachability for those task queues.
                     *
                     * Open source users can adjust this limit by setting the server's dynamic config value for
                     * `limit.reachabilityTaskQueueScan` with the caveat that this call can strain the visibility store.
                     */
                    buildIdReachability?: (temporal.api.taskqueue.v1.IBuildIdReachability[]|null);
                }

                /**
                 * [cleanup-wv-pre-release]
                 * Deprecated. Use `DescribeTaskQueue`.
                 */
                class GetWorkerTaskReachabilityResponse implements IGetWorkerTaskReachabilityResponse {

                    /**
                     * Constructs a new GetWorkerTaskReachabilityResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetWorkerTaskReachabilityResponse);

                    /**
                     * Task reachability, broken down by build id and then task queue.
                     * When requesting a large number of task queues or all task queues associated with the given build ids in a
                     * namespace, all task queues will be listed in the response but some of them may not contain reachability
                     * information due to a server enforced limit. When reaching the limit, task queues that reachability information
                     * could not be retrieved for will be marked with a single TASK_REACHABILITY_UNSPECIFIED entry. The caller may issue
                     * another call to get the reachability for those task queues.
                     *
                     * Open source users can adjust this limit by setting the server's dynamic config value for
                     * `limit.reachabilityTaskQueueScan` with the caveat that this call can strain the visibility store.
                     */
                    public buildIdReachability: temporal.api.taskqueue.v1.IBuildIdReachability[];

                    /**
                     * Creates a new GetWorkerTaskReachabilityResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetWorkerTaskReachabilityResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetWorkerTaskReachabilityResponse): temporal.api.workflowservice.v1.GetWorkerTaskReachabilityResponse;

                    /**
                     * Encodes the specified GetWorkerTaskReachabilityResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerTaskReachabilityResponse.verify|verify} messages.
                     * @param message GetWorkerTaskReachabilityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetWorkerTaskReachabilityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetWorkerTaskReachabilityResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetWorkerTaskReachabilityResponse.verify|verify} messages.
                     * @param message GetWorkerTaskReachabilityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetWorkerTaskReachabilityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetWorkerTaskReachabilityResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetWorkerTaskReachabilityResponse
                     * @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): temporal.api.workflowservice.v1.GetWorkerTaskReachabilityResponse;

                    /**
                     * Decodes a GetWorkerTaskReachabilityResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetWorkerTaskReachabilityResponse
                     * @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)): temporal.api.workflowservice.v1.GetWorkerTaskReachabilityResponse;

                    /**
                     * Creates a GetWorkerTaskReachabilityResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetWorkerTaskReachabilityResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetWorkerTaskReachabilityResponse;

                    /**
                     * Creates a plain object from a GetWorkerTaskReachabilityResponse message. Also converts values to other types if specified.
                     * @param message GetWorkerTaskReachabilityResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetWorkerTaskReachabilityResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetWorkerTaskReachabilityResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetWorkerTaskReachabilityResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateWorkflowExecutionRequest. */
                interface IUpdateWorkflowExecutionRequest {

                    /** The namespace name of the target Workflow. */
                    namespace?: (string|null);

                    /**
                     * The target Workflow Id and (optionally) a specific Run Id thereof.
                     * (-- api-linter: core::0203::optional=disabled
                     * aip.dev/not-precedent: false positive triggered by the word "optional" --)
                     */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * If set, this call will error if the most recent (if no Run Id is set on
                     * `workflow_execution`), or specified (if it is) Workflow Execution is not
                     * part of the same execution chain as this Id.
                     */
                    firstExecutionRunId?: (string|null);

                    /**
                     * Specifies client's intent to wait for Update results.
                     * NOTE: This field works together with API call timeout which is limited by
                     * server timeout (maximum wait time). If server timeout is expired before
                     * user specified timeout, API call returns even if specified stage is not reached.
                     * Actual reached stage will be included in the response.
                     */
                    waitPolicy?: (temporal.api.update.v1.IWaitPolicy|null);

                    /**
                     * The request information that will be delivered all the way down to the
                     * Workflow Execution.
                     */
                    request?: (temporal.api.update.v1.IRequest|null);
                }

                /**
                 * (-- api-linter: core::0134=disabled
                 * aip.dev/not-precedent: Update RPCs don't follow Google API format. --)
                 */
                class UpdateWorkflowExecutionRequest implements IUpdateWorkflowExecutionRequest {

                    /**
                     * Constructs a new UpdateWorkflowExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionRequest);

                    /** The namespace name of the target Workflow. */
                    public namespace: string;

                    /**
                     * The target Workflow Id and (optionally) a specific Run Id thereof.
                     * (-- api-linter: core::0203::optional=disabled
                     * aip.dev/not-precedent: false positive triggered by the word "optional" --)
                     */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * If set, this call will error if the most recent (if no Run Id is set on
                     * `workflow_execution`), or specified (if it is) Workflow Execution is not
                     * part of the same execution chain as this Id.
                     */
                    public firstExecutionRunId: string;

                    /**
                     * Specifies client's intent to wait for Update results.
                     * NOTE: This field works together with API call timeout which is limited by
                     * server timeout (maximum wait time). If server timeout is expired before
                     * user specified timeout, API call returns even if specified stage is not reached.
                     * Actual reached stage will be included in the response.
                     */
                    public waitPolicy?: (temporal.api.update.v1.IWaitPolicy|null);

                    /**
                     * The request information that will be delivered all the way down to the
                     * Workflow Execution.
                     */
                    public request?: (temporal.api.update.v1.IRequest|null);

                    /**
                     * Creates a new UpdateWorkflowExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkflowExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionRequest): temporal.api.workflowservice.v1.UpdateWorkflowExecutionRequest;

                    /**
                     * Encodes the specified UpdateWorkflowExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkflowExecutionRequest.verify|verify} messages.
                     * @param message UpdateWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkflowExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkflowExecutionRequest.verify|verify} messages.
                     * @param message UpdateWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkflowExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkflowExecutionRequest
                     * @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): temporal.api.workflowservice.v1.UpdateWorkflowExecutionRequest;

                    /**
                     * Decodes an UpdateWorkflowExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkflowExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkflowExecutionRequest;

                    /**
                     * Creates an UpdateWorkflowExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkflowExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkflowExecutionRequest;

                    /**
                     * Creates a plain object from an UpdateWorkflowExecutionRequest message. Also converts values to other types if specified.
                     * @param message UpdateWorkflowExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkflowExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkflowExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkflowExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateWorkflowExecutionResponse. */
                interface IUpdateWorkflowExecutionResponse {

                    /** Enough information for subsequent poll calls if needed. Never null. */
                    updateRef?: (temporal.api.update.v1.IUpdateRef|null);

                    /**
                     * The outcome of the Update if and only if the Workflow Update
                     * has completed. If this response is being returned before the Update has
                     * completed then this field will not be set.
                     */
                    outcome?: (temporal.api.update.v1.IOutcome|null);

                    /**
                     * The most advanced lifecycle stage that the Update is known to have
                     * reached, where lifecycle stages are ordered
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_UNSPECIFIED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ADMITTED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ACCEPTED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_COMPLETED.
                     * UNSPECIFIED will be returned if and only if the server's maximum wait
                     * time was reached before the Update reached the stage specified in the
                     * request WaitPolicy, and before the context deadline expired; clients may
                     * may then retry the call as needed.
                     */
                    stage?: (temporal.api.enums.v1.UpdateWorkflowExecutionLifecycleStage|null);
                }

                /** Represents an UpdateWorkflowExecutionResponse. */
                class UpdateWorkflowExecutionResponse implements IUpdateWorkflowExecutionResponse {

                    /**
                     * Constructs a new UpdateWorkflowExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionResponse);

                    /** Enough information for subsequent poll calls if needed. Never null. */
                    public updateRef?: (temporal.api.update.v1.IUpdateRef|null);

                    /**
                     * The outcome of the Update if and only if the Workflow Update
                     * has completed. If this response is being returned before the Update has
                     * completed then this field will not be set.
                     */
                    public outcome?: (temporal.api.update.v1.IOutcome|null);

                    /**
                     * The most advanced lifecycle stage that the Update is known to have
                     * reached, where lifecycle stages are ordered
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_UNSPECIFIED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ADMITTED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ACCEPTED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_COMPLETED.
                     * UNSPECIFIED will be returned if and only if the server's maximum wait
                     * time was reached before the Update reached the stage specified in the
                     * request WaitPolicy, and before the context deadline expired; clients may
                     * may then retry the call as needed.
                     */
                    public stage: temporal.api.enums.v1.UpdateWorkflowExecutionLifecycleStage;

                    /**
                     * Creates a new UpdateWorkflowExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkflowExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionResponse): temporal.api.workflowservice.v1.UpdateWorkflowExecutionResponse;

                    /**
                     * Encodes the specified UpdateWorkflowExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkflowExecutionResponse.verify|verify} messages.
                     * @param message UpdateWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkflowExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkflowExecutionResponse.verify|verify} messages.
                     * @param message UpdateWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkflowExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkflowExecutionResponse
                     * @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): temporal.api.workflowservice.v1.UpdateWorkflowExecutionResponse;

                    /**
                     * Decodes an UpdateWorkflowExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkflowExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkflowExecutionResponse;

                    /**
                     * Creates an UpdateWorkflowExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkflowExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkflowExecutionResponse;

                    /**
                     * Creates a plain object from an UpdateWorkflowExecutionResponse message. Also converts values to other types if specified.
                     * @param message UpdateWorkflowExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkflowExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkflowExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkflowExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartBatchOperationRequest. */
                interface IStartBatchOperationRequest {

                    /** Namespace that contains the batch operation */
                    namespace?: (string|null);

                    /**
                     * Visibility query defines the the group of workflow to apply the batch operation
                     * This field and `executions` are mutually exclusive
                     */
                    visibilityQuery?: (string|null);

                    /** Job ID defines the unique ID for the batch job */
                    jobId?: (string|null);

                    /** Reason to perform the batch operation */
                    reason?: (string|null);

                    /**
                     * Executions to apply the batch operation
                     * This field and `visibility_query` are mutually exclusive
                     */
                    executions?: (temporal.api.common.v1.IWorkflowExecution[]|null);

                    /**
                     * Limit for the number of operations processed per second within this batch.
                     * Its purpose is to reduce the stress on the system caused by batch operations, which helps to prevent system
                     * overload and minimize potential delays in executing ongoing tasks for user workers.
                     * Note that when no explicit limit is provided, the server will operate according to its limit defined by the
                     * dynamic configuration key `worker.batcherRPS`. This also applies if the value in this field exceeds the
                     * server's configured limit.
                     */
                    maxOperationsPerSecond?: (number|null);

                    /** StartBatchOperationRequest terminationOperation */
                    terminationOperation?: (temporal.api.batch.v1.IBatchOperationTermination|null);

                    /** StartBatchOperationRequest signalOperation */
                    signalOperation?: (temporal.api.batch.v1.IBatchOperationSignal|null);

                    /** StartBatchOperationRequest cancellationOperation */
                    cancellationOperation?: (temporal.api.batch.v1.IBatchOperationCancellation|null);

                    /** StartBatchOperationRequest deletionOperation */
                    deletionOperation?: (temporal.api.batch.v1.IBatchOperationDeletion|null);

                    /** StartBatchOperationRequest resetOperation */
                    resetOperation?: (temporal.api.batch.v1.IBatchOperationReset|null);

                    /** StartBatchOperationRequest updateWorkflowOptionsOperation */
                    updateWorkflowOptionsOperation?: (temporal.api.batch.v1.IBatchOperationUpdateWorkflowExecutionOptions|null);

                    /** StartBatchOperationRequest unpauseActivitiesOperation */
                    unpauseActivitiesOperation?: (temporal.api.batch.v1.IBatchOperationUnpauseActivities|null);

                    /** StartBatchOperationRequest resetActivitiesOperation */
                    resetActivitiesOperation?: (temporal.api.batch.v1.IBatchOperationResetActivities|null);

                    /** StartBatchOperationRequest updateActivityOptionsOperation */
                    updateActivityOptionsOperation?: (temporal.api.batch.v1.IBatchOperationUpdateActivityOptions|null);
                }

                /** Represents a StartBatchOperationRequest. */
                class StartBatchOperationRequest implements IStartBatchOperationRequest {

                    /**
                     * Constructs a new StartBatchOperationRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IStartBatchOperationRequest);

                    /** Namespace that contains the batch operation */
                    public namespace: string;

                    /**
                     * Visibility query defines the the group of workflow to apply the batch operation
                     * This field and `executions` are mutually exclusive
                     */
                    public visibilityQuery: string;

                    /** Job ID defines the unique ID for the batch job */
                    public jobId: string;

                    /** Reason to perform the batch operation */
                    public reason: string;

                    /**
                     * Executions to apply the batch operation
                     * This field and `visibility_query` are mutually exclusive
                     */
                    public executions: temporal.api.common.v1.IWorkflowExecution[];

                    /**
                     * Limit for the number of operations processed per second within this batch.
                     * Its purpose is to reduce the stress on the system caused by batch operations, which helps to prevent system
                     * overload and minimize potential delays in executing ongoing tasks for user workers.
                     * Note that when no explicit limit is provided, the server will operate according to its limit defined by the
                     * dynamic configuration key `worker.batcherRPS`. This also applies if the value in this field exceeds the
                     * server's configured limit.
                     */
                    public maxOperationsPerSecond: number;

                    /** StartBatchOperationRequest terminationOperation. */
                    public terminationOperation?: (temporal.api.batch.v1.IBatchOperationTermination|null);

                    /** StartBatchOperationRequest signalOperation. */
                    public signalOperation?: (temporal.api.batch.v1.IBatchOperationSignal|null);

                    /** StartBatchOperationRequest cancellationOperation. */
                    public cancellationOperation?: (temporal.api.batch.v1.IBatchOperationCancellation|null);

                    /** StartBatchOperationRequest deletionOperation. */
                    public deletionOperation?: (temporal.api.batch.v1.IBatchOperationDeletion|null);

                    /** StartBatchOperationRequest resetOperation. */
                    public resetOperation?: (temporal.api.batch.v1.IBatchOperationReset|null);

                    /** StartBatchOperationRequest updateWorkflowOptionsOperation. */
                    public updateWorkflowOptionsOperation?: (temporal.api.batch.v1.IBatchOperationUpdateWorkflowExecutionOptions|null);

                    /** StartBatchOperationRequest unpauseActivitiesOperation. */
                    public unpauseActivitiesOperation?: (temporal.api.batch.v1.IBatchOperationUnpauseActivities|null);

                    /** StartBatchOperationRequest resetActivitiesOperation. */
                    public resetActivitiesOperation?: (temporal.api.batch.v1.IBatchOperationResetActivities|null);

                    /** StartBatchOperationRequest updateActivityOptionsOperation. */
                    public updateActivityOptionsOperation?: (temporal.api.batch.v1.IBatchOperationUpdateActivityOptions|null);

                    /** Operation input */
                    public operation?: ("terminationOperation"|"signalOperation"|"cancellationOperation"|"deletionOperation"|"resetOperation"|"updateWorkflowOptionsOperation"|"unpauseActivitiesOperation"|"resetActivitiesOperation"|"updateActivityOptionsOperation");

                    /**
                     * Creates a new StartBatchOperationRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartBatchOperationRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IStartBatchOperationRequest): temporal.api.workflowservice.v1.StartBatchOperationRequest;

                    /**
                     * Encodes the specified StartBatchOperationRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.StartBatchOperationRequest.verify|verify} messages.
                     * @param message StartBatchOperationRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IStartBatchOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartBatchOperationRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.StartBatchOperationRequest.verify|verify} messages.
                     * @param message StartBatchOperationRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IStartBatchOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartBatchOperationRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartBatchOperationRequest
                     * @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): temporal.api.workflowservice.v1.StartBatchOperationRequest;

                    /**
                     * Decodes a StartBatchOperationRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartBatchOperationRequest
                     * @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)): temporal.api.workflowservice.v1.StartBatchOperationRequest;

                    /**
                     * Creates a StartBatchOperationRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartBatchOperationRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.StartBatchOperationRequest;

                    /**
                     * Creates a plain object from a StartBatchOperationRequest message. Also converts values to other types if specified.
                     * @param message StartBatchOperationRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.StartBatchOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartBatchOperationRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartBatchOperationRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartBatchOperationResponse. */
                interface IStartBatchOperationResponse {
                }

                /** Represents a StartBatchOperationResponse. */
                class StartBatchOperationResponse implements IStartBatchOperationResponse {

                    /**
                     * Constructs a new StartBatchOperationResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IStartBatchOperationResponse);

                    /**
                     * Creates a new StartBatchOperationResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartBatchOperationResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IStartBatchOperationResponse): temporal.api.workflowservice.v1.StartBatchOperationResponse;

                    /**
                     * Encodes the specified StartBatchOperationResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.StartBatchOperationResponse.verify|verify} messages.
                     * @param message StartBatchOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IStartBatchOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartBatchOperationResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.StartBatchOperationResponse.verify|verify} messages.
                     * @param message StartBatchOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IStartBatchOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartBatchOperationResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartBatchOperationResponse
                     * @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): temporal.api.workflowservice.v1.StartBatchOperationResponse;

                    /**
                     * Decodes a StartBatchOperationResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartBatchOperationResponse
                     * @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)): temporal.api.workflowservice.v1.StartBatchOperationResponse;

                    /**
                     * Creates a StartBatchOperationResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartBatchOperationResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.StartBatchOperationResponse;

                    /**
                     * Creates a plain object from a StartBatchOperationResponse message. Also converts values to other types if specified.
                     * @param message StartBatchOperationResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.StartBatchOperationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartBatchOperationResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartBatchOperationResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StopBatchOperationRequest. */
                interface IStopBatchOperationRequest {

                    /** Namespace that contains the batch operation */
                    namespace?: (string|null);

                    /** Batch job id */
                    jobId?: (string|null);

                    /** Reason to stop a batch operation */
                    reason?: (string|null);

                    /** Identity of the operator */
                    identity?: (string|null);
                }

                /** Represents a StopBatchOperationRequest. */
                class StopBatchOperationRequest implements IStopBatchOperationRequest {

                    /**
                     * Constructs a new StopBatchOperationRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IStopBatchOperationRequest);

                    /** Namespace that contains the batch operation */
                    public namespace: string;

                    /** Batch job id */
                    public jobId: string;

                    /** Reason to stop a batch operation */
                    public reason: string;

                    /** Identity of the operator */
                    public identity: string;

                    /**
                     * Creates a new StopBatchOperationRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StopBatchOperationRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IStopBatchOperationRequest): temporal.api.workflowservice.v1.StopBatchOperationRequest;

                    /**
                     * Encodes the specified StopBatchOperationRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.StopBatchOperationRequest.verify|verify} messages.
                     * @param message StopBatchOperationRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IStopBatchOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StopBatchOperationRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.StopBatchOperationRequest.verify|verify} messages.
                     * @param message StopBatchOperationRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IStopBatchOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StopBatchOperationRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StopBatchOperationRequest
                     * @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): temporal.api.workflowservice.v1.StopBatchOperationRequest;

                    /**
                     * Decodes a StopBatchOperationRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StopBatchOperationRequest
                     * @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)): temporal.api.workflowservice.v1.StopBatchOperationRequest;

                    /**
                     * Creates a StopBatchOperationRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StopBatchOperationRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.StopBatchOperationRequest;

                    /**
                     * Creates a plain object from a StopBatchOperationRequest message. Also converts values to other types if specified.
                     * @param message StopBatchOperationRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.StopBatchOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StopBatchOperationRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StopBatchOperationRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StopBatchOperationResponse. */
                interface IStopBatchOperationResponse {
                }

                /** Represents a StopBatchOperationResponse. */
                class StopBatchOperationResponse implements IStopBatchOperationResponse {

                    /**
                     * Constructs a new StopBatchOperationResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IStopBatchOperationResponse);

                    /**
                     * Creates a new StopBatchOperationResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StopBatchOperationResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IStopBatchOperationResponse): temporal.api.workflowservice.v1.StopBatchOperationResponse;

                    /**
                     * Encodes the specified StopBatchOperationResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.StopBatchOperationResponse.verify|verify} messages.
                     * @param message StopBatchOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IStopBatchOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StopBatchOperationResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.StopBatchOperationResponse.verify|verify} messages.
                     * @param message StopBatchOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IStopBatchOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StopBatchOperationResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StopBatchOperationResponse
                     * @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): temporal.api.workflowservice.v1.StopBatchOperationResponse;

                    /**
                     * Decodes a StopBatchOperationResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StopBatchOperationResponse
                     * @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)): temporal.api.workflowservice.v1.StopBatchOperationResponse;

                    /**
                     * Creates a StopBatchOperationResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StopBatchOperationResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.StopBatchOperationResponse;

                    /**
                     * Creates a plain object from a StopBatchOperationResponse message. Also converts values to other types if specified.
                     * @param message StopBatchOperationResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.StopBatchOperationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StopBatchOperationResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StopBatchOperationResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeBatchOperationRequest. */
                interface IDescribeBatchOperationRequest {

                    /** Namespace that contains the batch operation */
                    namespace?: (string|null);

                    /** Batch job id */
                    jobId?: (string|null);
                }

                /** Represents a DescribeBatchOperationRequest. */
                class DescribeBatchOperationRequest implements IDescribeBatchOperationRequest {

                    /**
                     * Constructs a new DescribeBatchOperationRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeBatchOperationRequest);

                    /** Namespace that contains the batch operation */
                    public namespace: string;

                    /** Batch job id */
                    public jobId: string;

                    /**
                     * Creates a new DescribeBatchOperationRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeBatchOperationRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeBatchOperationRequest): temporal.api.workflowservice.v1.DescribeBatchOperationRequest;

                    /**
                     * Encodes the specified DescribeBatchOperationRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeBatchOperationRequest.verify|verify} messages.
                     * @param message DescribeBatchOperationRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeBatchOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeBatchOperationRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeBatchOperationRequest.verify|verify} messages.
                     * @param message DescribeBatchOperationRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeBatchOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeBatchOperationRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeBatchOperationRequest
                     * @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): temporal.api.workflowservice.v1.DescribeBatchOperationRequest;

                    /**
                     * Decodes a DescribeBatchOperationRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeBatchOperationRequest
                     * @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)): temporal.api.workflowservice.v1.DescribeBatchOperationRequest;

                    /**
                     * Creates a DescribeBatchOperationRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeBatchOperationRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeBatchOperationRequest;

                    /**
                     * Creates a plain object from a DescribeBatchOperationRequest message. Also converts values to other types if specified.
                     * @param message DescribeBatchOperationRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeBatchOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeBatchOperationRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeBatchOperationRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeBatchOperationResponse. */
                interface IDescribeBatchOperationResponse {

                    /** Batch operation type */
                    operationType?: (temporal.api.enums.v1.BatchOperationType|null);

                    /** Batch job ID */
                    jobId?: (string|null);

                    /** Batch operation state */
                    state?: (temporal.api.enums.v1.BatchOperationState|null);

                    /** Batch operation start time */
                    startTime?: (google.protobuf.ITimestamp|null);

                    /** Batch operation close time */
                    closeTime?: (google.protobuf.ITimestamp|null);

                    /** Total operation count */
                    totalOperationCount?: (Long|null);

                    /** Complete operation count */
                    completeOperationCount?: (Long|null);

                    /** Failure operation count */
                    failureOperationCount?: (Long|null);

                    /** Identity indicates the operator identity */
                    identity?: (string|null);

                    /** Reason indicates the reason to stop a operation */
                    reason?: (string|null);
                }

                /** Represents a DescribeBatchOperationResponse. */
                class DescribeBatchOperationResponse implements IDescribeBatchOperationResponse {

                    /**
                     * Constructs a new DescribeBatchOperationResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeBatchOperationResponse);

                    /** Batch operation type */
                    public operationType: temporal.api.enums.v1.BatchOperationType;

                    /** Batch job ID */
                    public jobId: string;

                    /** Batch operation state */
                    public state: temporal.api.enums.v1.BatchOperationState;

                    /** Batch operation start time */
                    public startTime?: (google.protobuf.ITimestamp|null);

                    /** Batch operation close time */
                    public closeTime?: (google.protobuf.ITimestamp|null);

                    /** Total operation count */
                    public totalOperationCount: Long;

                    /** Complete operation count */
                    public completeOperationCount: Long;

                    /** Failure operation count */
                    public failureOperationCount: Long;

                    /** Identity indicates the operator identity */
                    public identity: string;

                    /** Reason indicates the reason to stop a operation */
                    public reason: string;

                    /**
                     * Creates a new DescribeBatchOperationResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeBatchOperationResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeBatchOperationResponse): temporal.api.workflowservice.v1.DescribeBatchOperationResponse;

                    /**
                     * Encodes the specified DescribeBatchOperationResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeBatchOperationResponse.verify|verify} messages.
                     * @param message DescribeBatchOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeBatchOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeBatchOperationResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeBatchOperationResponse.verify|verify} messages.
                     * @param message DescribeBatchOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeBatchOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeBatchOperationResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeBatchOperationResponse
                     * @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): temporal.api.workflowservice.v1.DescribeBatchOperationResponse;

                    /**
                     * Decodes a DescribeBatchOperationResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeBatchOperationResponse
                     * @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)): temporal.api.workflowservice.v1.DescribeBatchOperationResponse;

                    /**
                     * Creates a DescribeBatchOperationResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeBatchOperationResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeBatchOperationResponse;

                    /**
                     * Creates a plain object from a DescribeBatchOperationResponse message. Also converts values to other types if specified.
                     * @param message DescribeBatchOperationResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeBatchOperationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeBatchOperationResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeBatchOperationResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListBatchOperationsRequest. */
                interface IListBatchOperationsRequest {

                    /** Namespace that contains the batch operation */
                    namespace?: (string|null);

                    /** List page size */
                    pageSize?: (number|null);

                    /** Next page token */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListBatchOperationsRequest. */
                class ListBatchOperationsRequest implements IListBatchOperationsRequest {

                    /**
                     * Constructs a new ListBatchOperationsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListBatchOperationsRequest);

                    /** Namespace that contains the batch operation */
                    public namespace: string;

                    /** List page size */
                    public pageSize: number;

                    /** Next page token */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListBatchOperationsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListBatchOperationsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListBatchOperationsRequest): temporal.api.workflowservice.v1.ListBatchOperationsRequest;

                    /**
                     * Encodes the specified ListBatchOperationsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListBatchOperationsRequest.verify|verify} messages.
                     * @param message ListBatchOperationsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListBatchOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListBatchOperationsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListBatchOperationsRequest.verify|verify} messages.
                     * @param message ListBatchOperationsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListBatchOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListBatchOperationsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListBatchOperationsRequest
                     * @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): temporal.api.workflowservice.v1.ListBatchOperationsRequest;

                    /**
                     * Decodes a ListBatchOperationsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListBatchOperationsRequest
                     * @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)): temporal.api.workflowservice.v1.ListBatchOperationsRequest;

                    /**
                     * Creates a ListBatchOperationsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListBatchOperationsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListBatchOperationsRequest;

                    /**
                     * Creates a plain object from a ListBatchOperationsRequest message. Also converts values to other types if specified.
                     * @param message ListBatchOperationsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListBatchOperationsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListBatchOperationsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListBatchOperationsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListBatchOperationsResponse. */
                interface IListBatchOperationsResponse {

                    /** BatchOperationInfo contains the basic info about batch operation */
                    operationInfo?: (temporal.api.batch.v1.IBatchOperationInfo[]|null);

                    /** ListBatchOperationsResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListBatchOperationsResponse. */
                class ListBatchOperationsResponse implements IListBatchOperationsResponse {

                    /**
                     * Constructs a new ListBatchOperationsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListBatchOperationsResponse);

                    /** BatchOperationInfo contains the basic info about batch operation */
                    public operationInfo: temporal.api.batch.v1.IBatchOperationInfo[];

                    /** ListBatchOperationsResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListBatchOperationsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListBatchOperationsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListBatchOperationsResponse): temporal.api.workflowservice.v1.ListBatchOperationsResponse;

                    /**
                     * Encodes the specified ListBatchOperationsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListBatchOperationsResponse.verify|verify} messages.
                     * @param message ListBatchOperationsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListBatchOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListBatchOperationsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListBatchOperationsResponse.verify|verify} messages.
                     * @param message ListBatchOperationsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListBatchOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListBatchOperationsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListBatchOperationsResponse
                     * @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): temporal.api.workflowservice.v1.ListBatchOperationsResponse;

                    /**
                     * Decodes a ListBatchOperationsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListBatchOperationsResponse
                     * @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)): temporal.api.workflowservice.v1.ListBatchOperationsResponse;

                    /**
                     * Creates a ListBatchOperationsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListBatchOperationsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListBatchOperationsResponse;

                    /**
                     * Creates a plain object from a ListBatchOperationsResponse message. Also converts values to other types if specified.
                     * @param message ListBatchOperationsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListBatchOperationsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListBatchOperationsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListBatchOperationsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollWorkflowExecutionUpdateRequest. */
                interface IPollWorkflowExecutionUpdateRequest {

                    /**
                     * The namespace of the Workflow Execution to which the Update was
                     * originally issued.
                     */
                    namespace?: (string|null);

                    /** The Update reference returned in the initial UpdateWorkflowExecutionResponse. */
                    updateRef?: (temporal.api.update.v1.IUpdateRef|null);

                    /** The identity of the worker/client who is polling this Update outcome. */
                    identity?: (string|null);

                    /**
                     * Specifies client's intent to wait for Update results.
                     * Omit to request a non-blocking poll.
                     */
                    waitPolicy?: (temporal.api.update.v1.IWaitPolicy|null);
                }

                /** Represents a PollWorkflowExecutionUpdateRequest. */
                class PollWorkflowExecutionUpdateRequest implements IPollWorkflowExecutionUpdateRequest {

                    /**
                     * Constructs a new PollWorkflowExecutionUpdateRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPollWorkflowExecutionUpdateRequest);

                    /**
                     * The namespace of the Workflow Execution to which the Update was
                     * originally issued.
                     */
                    public namespace: string;

                    /** The Update reference returned in the initial UpdateWorkflowExecutionResponse. */
                    public updateRef?: (temporal.api.update.v1.IUpdateRef|null);

                    /** The identity of the worker/client who is polling this Update outcome. */
                    public identity: string;

                    /**
                     * Specifies client's intent to wait for Update results.
                     * Omit to request a non-blocking poll.
                     */
                    public waitPolicy?: (temporal.api.update.v1.IWaitPolicy|null);

                    /**
                     * Creates a new PollWorkflowExecutionUpdateRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollWorkflowExecutionUpdateRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPollWorkflowExecutionUpdateRequest): temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateRequest;

                    /**
                     * Encodes the specified PollWorkflowExecutionUpdateRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateRequest.verify|verify} messages.
                     * @param message PollWorkflowExecutionUpdateRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPollWorkflowExecutionUpdateRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollWorkflowExecutionUpdateRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateRequest.verify|verify} messages.
                     * @param message PollWorkflowExecutionUpdateRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPollWorkflowExecutionUpdateRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollWorkflowExecutionUpdateRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollWorkflowExecutionUpdateRequest
                     * @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): temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateRequest;

                    /**
                     * Decodes a PollWorkflowExecutionUpdateRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollWorkflowExecutionUpdateRequest
                     * @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)): temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateRequest;

                    /**
                     * Creates a PollWorkflowExecutionUpdateRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollWorkflowExecutionUpdateRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateRequest;

                    /**
                     * Creates a plain object from a PollWorkflowExecutionUpdateRequest message. Also converts values to other types if specified.
                     * @param message PollWorkflowExecutionUpdateRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollWorkflowExecutionUpdateRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollWorkflowExecutionUpdateRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollWorkflowExecutionUpdateResponse. */
                interface IPollWorkflowExecutionUpdateResponse {

                    /**
                     * The outcome of the update if and only if the update has completed. If
                     * this response is being returned before the update has completed (e.g. due
                     * to the specification of a wait policy that only waits on
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ACCEPTED) then this field will
                     * not be set.
                     */
                    outcome?: (temporal.api.update.v1.IOutcome|null);

                    /**
                     * The most advanced lifecycle stage that the Update is known to have
                     * reached, where lifecycle stages are ordered
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_UNSPECIFIED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ADMITTED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ACCEPTED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_COMPLETED.
                     * UNSPECIFIED will be returned if and only if the server's maximum wait
                     * time was reached before the Update reached the stage specified in the
                     * request WaitPolicy, and before the context deadline expired; clients may
                     * may then retry the call as needed.
                     */
                    stage?: (temporal.api.enums.v1.UpdateWorkflowExecutionLifecycleStage|null);

                    /** Sufficient information to address this Update. */
                    updateRef?: (temporal.api.update.v1.IUpdateRef|null);
                }

                /** Represents a PollWorkflowExecutionUpdateResponse. */
                class PollWorkflowExecutionUpdateResponse implements IPollWorkflowExecutionUpdateResponse {

                    /**
                     * Constructs a new PollWorkflowExecutionUpdateResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPollWorkflowExecutionUpdateResponse);

                    /**
                     * The outcome of the update if and only if the update has completed. If
                     * this response is being returned before the update has completed (e.g. due
                     * to the specification of a wait policy that only waits on
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ACCEPTED) then this field will
                     * not be set.
                     */
                    public outcome?: (temporal.api.update.v1.IOutcome|null);

                    /**
                     * The most advanced lifecycle stage that the Update is known to have
                     * reached, where lifecycle stages are ordered
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_UNSPECIFIED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ADMITTED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ACCEPTED <
                     * UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_COMPLETED.
                     * UNSPECIFIED will be returned if and only if the server's maximum wait
                     * time was reached before the Update reached the stage specified in the
                     * request WaitPolicy, and before the context deadline expired; clients may
                     * may then retry the call as needed.
                     */
                    public stage: temporal.api.enums.v1.UpdateWorkflowExecutionLifecycleStage;

                    /** Sufficient information to address this Update. */
                    public updateRef?: (temporal.api.update.v1.IUpdateRef|null);

                    /**
                     * Creates a new PollWorkflowExecutionUpdateResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollWorkflowExecutionUpdateResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPollWorkflowExecutionUpdateResponse): temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateResponse;

                    /**
                     * Encodes the specified PollWorkflowExecutionUpdateResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateResponse.verify|verify} messages.
                     * @param message PollWorkflowExecutionUpdateResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPollWorkflowExecutionUpdateResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollWorkflowExecutionUpdateResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateResponse.verify|verify} messages.
                     * @param message PollWorkflowExecutionUpdateResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPollWorkflowExecutionUpdateResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollWorkflowExecutionUpdateResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollWorkflowExecutionUpdateResponse
                     * @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): temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateResponse;

                    /**
                     * Decodes a PollWorkflowExecutionUpdateResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollWorkflowExecutionUpdateResponse
                     * @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)): temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateResponse;

                    /**
                     * Creates a PollWorkflowExecutionUpdateResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollWorkflowExecutionUpdateResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateResponse;

                    /**
                     * Creates a plain object from a PollWorkflowExecutionUpdateResponse message. Also converts values to other types if specified.
                     * @param message PollWorkflowExecutionUpdateResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollWorkflowExecutionUpdateResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollWorkflowExecutionUpdateResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollNexusTaskQueueRequest. */
                interface IPollNexusTaskQueueRequest {

                    /** PollNexusTaskQueueRequest namespace */
                    namespace?: (string|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /**
                     * A unique key for this worker instance, used for tracking worker lifecycle.
                     * This is guaranteed to be unique, whereas identity is not guaranteed to be unique.
                     */
                    workerInstanceKey?: (string|null);

                    /** PollNexusTaskQueueRequest taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * Information about this worker's build identifier and if it is choosing to use the versioning
                     * feature. See the `WorkerVersionCapabilities` docstring for more.
                     * Deprecated. Replaced by deployment_options.
                     */
                    workerVersionCapabilities?: (temporal.api.common.v1.IWorkerVersionCapabilities|null);

                    /** Worker deployment options that user has set in the worker. */
                    deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /** Worker info to be sent to the server. */
                    workerHeartbeat?: (temporal.api.worker.v1.IWorkerHeartbeat[]|null);
                }

                /** Represents a PollNexusTaskQueueRequest. */
                class PollNexusTaskQueueRequest implements IPollNexusTaskQueueRequest {

                    /**
                     * Constructs a new PollNexusTaskQueueRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPollNexusTaskQueueRequest);

                    /** PollNexusTaskQueueRequest namespace. */
                    public namespace: string;

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /**
                     * A unique key for this worker instance, used for tracking worker lifecycle.
                     * This is guaranteed to be unique, whereas identity is not guaranteed to be unique.
                     */
                    public workerInstanceKey: string;

                    /** PollNexusTaskQueueRequest taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * Information about this worker's build identifier and if it is choosing to use the versioning
                     * feature. See the `WorkerVersionCapabilities` docstring for more.
                     * Deprecated. Replaced by deployment_options.
                     */
                    public workerVersionCapabilities?: (temporal.api.common.v1.IWorkerVersionCapabilities|null);

                    /** Worker deployment options that user has set in the worker. */
                    public deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /** Worker info to be sent to the server. */
                    public workerHeartbeat: temporal.api.worker.v1.IWorkerHeartbeat[];

                    /**
                     * Creates a new PollNexusTaskQueueRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollNexusTaskQueueRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPollNexusTaskQueueRequest): temporal.api.workflowservice.v1.PollNexusTaskQueueRequest;

                    /**
                     * Encodes the specified PollNexusTaskQueueRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.PollNexusTaskQueueRequest.verify|verify} messages.
                     * @param message PollNexusTaskQueueRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPollNexusTaskQueueRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollNexusTaskQueueRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PollNexusTaskQueueRequest.verify|verify} messages.
                     * @param message PollNexusTaskQueueRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPollNexusTaskQueueRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollNexusTaskQueueRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollNexusTaskQueueRequest
                     * @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): temporal.api.workflowservice.v1.PollNexusTaskQueueRequest;

                    /**
                     * Decodes a PollNexusTaskQueueRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollNexusTaskQueueRequest
                     * @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)): temporal.api.workflowservice.v1.PollNexusTaskQueueRequest;

                    /**
                     * Creates a PollNexusTaskQueueRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollNexusTaskQueueRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PollNexusTaskQueueRequest;

                    /**
                     * Creates a plain object from a PollNexusTaskQueueRequest message. Also converts values to other types if specified.
                     * @param message PollNexusTaskQueueRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PollNexusTaskQueueRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollNexusTaskQueueRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollNexusTaskQueueRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollNexusTaskQueueResponse. */
                interface IPollNexusTaskQueueResponse {

                    /** An opaque unique identifier for this task for correlating a completion request the embedded request. */
                    taskToken?: (Uint8Array|null);

                    /** Embedded request as translated from the incoming frontend request. */
                    request?: (temporal.api.nexus.v1.IRequest|null);

                    /** Server-advised information the SDK may use to adjust its poller count. */
                    pollerScalingDecision?: (temporal.api.taskqueue.v1.IPollerScalingDecision|null);
                }

                /** Represents a PollNexusTaskQueueResponse. */
                class PollNexusTaskQueueResponse implements IPollNexusTaskQueueResponse {

                    /**
                     * Constructs a new PollNexusTaskQueueResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPollNexusTaskQueueResponse);

                    /** An opaque unique identifier for this task for correlating a completion request the embedded request. */
                    public taskToken: Uint8Array;

                    /** Embedded request as translated from the incoming frontend request. */
                    public request?: (temporal.api.nexus.v1.IRequest|null);

                    /** Server-advised information the SDK may use to adjust its poller count. */
                    public pollerScalingDecision?: (temporal.api.taskqueue.v1.IPollerScalingDecision|null);

                    /**
                     * Creates a new PollNexusTaskQueueResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollNexusTaskQueueResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPollNexusTaskQueueResponse): temporal.api.workflowservice.v1.PollNexusTaskQueueResponse;

                    /**
                     * Encodes the specified PollNexusTaskQueueResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.PollNexusTaskQueueResponse.verify|verify} messages.
                     * @param message PollNexusTaskQueueResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPollNexusTaskQueueResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollNexusTaskQueueResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PollNexusTaskQueueResponse.verify|verify} messages.
                     * @param message PollNexusTaskQueueResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPollNexusTaskQueueResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollNexusTaskQueueResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollNexusTaskQueueResponse
                     * @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): temporal.api.workflowservice.v1.PollNexusTaskQueueResponse;

                    /**
                     * Decodes a PollNexusTaskQueueResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollNexusTaskQueueResponse
                     * @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)): temporal.api.workflowservice.v1.PollNexusTaskQueueResponse;

                    /**
                     * Creates a PollNexusTaskQueueResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollNexusTaskQueueResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PollNexusTaskQueueResponse;

                    /**
                     * Creates a plain object from a PollNexusTaskQueueResponse message. Also converts values to other types if specified.
                     * @param message PollNexusTaskQueueResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PollNexusTaskQueueResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollNexusTaskQueueResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollNexusTaskQueueResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondNexusTaskCompletedRequest. */
                interface IRespondNexusTaskCompletedRequest {

                    /** RespondNexusTaskCompletedRequest namespace */
                    namespace?: (string|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** A unique identifier for this task as received via a poll response. */
                    taskToken?: (Uint8Array|null);

                    /** Embedded response to be translated into a frontend response. */
                    response?: (temporal.api.nexus.v1.IResponse|null);
                }

                /** Represents a RespondNexusTaskCompletedRequest. */
                class RespondNexusTaskCompletedRequest implements IRespondNexusTaskCompletedRequest {

                    /**
                     * Constructs a new RespondNexusTaskCompletedRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondNexusTaskCompletedRequest);

                    /** RespondNexusTaskCompletedRequest namespace. */
                    public namespace: string;

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** A unique identifier for this task as received via a poll response. */
                    public taskToken: Uint8Array;

                    /** Embedded response to be translated into a frontend response. */
                    public response?: (temporal.api.nexus.v1.IResponse|null);

                    /**
                     * Creates a new RespondNexusTaskCompletedRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondNexusTaskCompletedRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondNexusTaskCompletedRequest): temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest;

                    /**
                     * Encodes the specified RespondNexusTaskCompletedRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest.verify|verify} messages.
                     * @param message RespondNexusTaskCompletedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondNexusTaskCompletedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondNexusTaskCompletedRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest.verify|verify} messages.
                     * @param message RespondNexusTaskCompletedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondNexusTaskCompletedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondNexusTaskCompletedRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondNexusTaskCompletedRequest
                     * @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): temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest;

                    /**
                     * Decodes a RespondNexusTaskCompletedRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondNexusTaskCompletedRequest
                     * @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)): temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest;

                    /**
                     * Creates a RespondNexusTaskCompletedRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondNexusTaskCompletedRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest;

                    /**
                     * Creates a plain object from a RespondNexusTaskCompletedRequest message. Also converts values to other types if specified.
                     * @param message RespondNexusTaskCompletedRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondNexusTaskCompletedRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondNexusTaskCompletedRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondNexusTaskCompletedResponse. */
                interface IRespondNexusTaskCompletedResponse {
                }

                /** Represents a RespondNexusTaskCompletedResponse. */
                class RespondNexusTaskCompletedResponse implements IRespondNexusTaskCompletedResponse {

                    /**
                     * Constructs a new RespondNexusTaskCompletedResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondNexusTaskCompletedResponse);

                    /**
                     * Creates a new RespondNexusTaskCompletedResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondNexusTaskCompletedResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondNexusTaskCompletedResponse): temporal.api.workflowservice.v1.RespondNexusTaskCompletedResponse;

                    /**
                     * Encodes the specified RespondNexusTaskCompletedResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondNexusTaskCompletedResponse.verify|verify} messages.
                     * @param message RespondNexusTaskCompletedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondNexusTaskCompletedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondNexusTaskCompletedResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondNexusTaskCompletedResponse.verify|verify} messages.
                     * @param message RespondNexusTaskCompletedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondNexusTaskCompletedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondNexusTaskCompletedResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondNexusTaskCompletedResponse
                     * @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): temporal.api.workflowservice.v1.RespondNexusTaskCompletedResponse;

                    /**
                     * Decodes a RespondNexusTaskCompletedResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondNexusTaskCompletedResponse
                     * @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)): temporal.api.workflowservice.v1.RespondNexusTaskCompletedResponse;

                    /**
                     * Creates a RespondNexusTaskCompletedResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondNexusTaskCompletedResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondNexusTaskCompletedResponse;

                    /**
                     * Creates a plain object from a RespondNexusTaskCompletedResponse message. Also converts values to other types if specified.
                     * @param message RespondNexusTaskCompletedResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondNexusTaskCompletedResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondNexusTaskCompletedResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondNexusTaskCompletedResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondNexusTaskFailedRequest. */
                interface IRespondNexusTaskFailedRequest {

                    /** RespondNexusTaskFailedRequest namespace */
                    namespace?: (string|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** A unique identifier for this task. */
                    taskToken?: (Uint8Array|null);

                    /** Deprecated. Use the failure field instead. */
                    error?: (temporal.api.nexus.v1.IHandlerError|null);

                    /** The error the handler failed with. Must contain a NexusHandlerFailureInfo object. */
                    failure?: (temporal.api.failure.v1.IFailure|null);
                }

                /** Represents a RespondNexusTaskFailedRequest. */
                class RespondNexusTaskFailedRequest implements IRespondNexusTaskFailedRequest {

                    /**
                     * Constructs a new RespondNexusTaskFailedRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondNexusTaskFailedRequest);

                    /** RespondNexusTaskFailedRequest namespace. */
                    public namespace: string;

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** A unique identifier for this task. */
                    public taskToken: Uint8Array;

                    /** Deprecated. Use the failure field instead. */
                    public error?: (temporal.api.nexus.v1.IHandlerError|null);

                    /** The error the handler failed with. Must contain a NexusHandlerFailureInfo object. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Creates a new RespondNexusTaskFailedRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondNexusTaskFailedRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondNexusTaskFailedRequest): temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest;

                    /**
                     * Encodes the specified RespondNexusTaskFailedRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest.verify|verify} messages.
                     * @param message RespondNexusTaskFailedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondNexusTaskFailedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondNexusTaskFailedRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest.verify|verify} messages.
                     * @param message RespondNexusTaskFailedRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondNexusTaskFailedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondNexusTaskFailedRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondNexusTaskFailedRequest
                     * @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): temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest;

                    /**
                     * Decodes a RespondNexusTaskFailedRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondNexusTaskFailedRequest
                     * @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)): temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest;

                    /**
                     * Creates a RespondNexusTaskFailedRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondNexusTaskFailedRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest;

                    /**
                     * Creates a plain object from a RespondNexusTaskFailedRequest message. Also converts values to other types if specified.
                     * @param message RespondNexusTaskFailedRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondNexusTaskFailedRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondNexusTaskFailedRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RespondNexusTaskFailedResponse. */
                interface IRespondNexusTaskFailedResponse {
                }

                /** Represents a RespondNexusTaskFailedResponse. */
                class RespondNexusTaskFailedResponse implements IRespondNexusTaskFailedResponse {

                    /**
                     * Constructs a new RespondNexusTaskFailedResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRespondNexusTaskFailedResponse);

                    /**
                     * Creates a new RespondNexusTaskFailedResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RespondNexusTaskFailedResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRespondNexusTaskFailedResponse): temporal.api.workflowservice.v1.RespondNexusTaskFailedResponse;

                    /**
                     * Encodes the specified RespondNexusTaskFailedResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RespondNexusTaskFailedResponse.verify|verify} messages.
                     * @param message RespondNexusTaskFailedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRespondNexusTaskFailedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RespondNexusTaskFailedResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RespondNexusTaskFailedResponse.verify|verify} messages.
                     * @param message RespondNexusTaskFailedResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRespondNexusTaskFailedResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RespondNexusTaskFailedResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RespondNexusTaskFailedResponse
                     * @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): temporal.api.workflowservice.v1.RespondNexusTaskFailedResponse;

                    /**
                     * Decodes a RespondNexusTaskFailedResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RespondNexusTaskFailedResponse
                     * @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)): temporal.api.workflowservice.v1.RespondNexusTaskFailedResponse;

                    /**
                     * Creates a RespondNexusTaskFailedResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RespondNexusTaskFailedResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RespondNexusTaskFailedResponse;

                    /**
                     * Creates a plain object from a RespondNexusTaskFailedResponse message. Also converts values to other types if specified.
                     * @param message RespondNexusTaskFailedResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RespondNexusTaskFailedResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RespondNexusTaskFailedResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RespondNexusTaskFailedResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExecuteMultiOperationRequest. */
                interface IExecuteMultiOperationRequest {

                    /** ExecuteMultiOperationRequest namespace */
                    namespace?: (string|null);

                    /**
                     * List of operations to execute within a single workflow.
                     *
                     * Preconditions:
                     * - The list of operations must not be empty.
                     * - The workflow ids must match across operations.
                     * - The only valid list of operations at this time is [StartWorkflow, UpdateWorkflow], in this order.
                     *
                     * Note that additional operation-specific restrictions have to be considered.
                     */
                    operations?: (temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.IOperation[]|null);
                }

                /** Represents an ExecuteMultiOperationRequest. */
                class ExecuteMultiOperationRequest implements IExecuteMultiOperationRequest {

                    /**
                     * Constructs a new ExecuteMultiOperationRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IExecuteMultiOperationRequest);

                    /** ExecuteMultiOperationRequest namespace. */
                    public namespace: string;

                    /**
                     * List of operations to execute within a single workflow.
                     *
                     * Preconditions:
                     * - The list of operations must not be empty.
                     * - The workflow ids must match across operations.
                     * - The only valid list of operations at this time is [StartWorkflow, UpdateWorkflow], in this order.
                     *
                     * Note that additional operation-specific restrictions have to be considered.
                     */
                    public operations: temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.IOperation[];

                    /**
                     * Creates a new ExecuteMultiOperationRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExecuteMultiOperationRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IExecuteMultiOperationRequest): temporal.api.workflowservice.v1.ExecuteMultiOperationRequest;

                    /**
                     * Encodes the specified ExecuteMultiOperationRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.verify|verify} messages.
                     * @param message ExecuteMultiOperationRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IExecuteMultiOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExecuteMultiOperationRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.verify|verify} messages.
                     * @param message ExecuteMultiOperationRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IExecuteMultiOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExecuteMultiOperationRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExecuteMultiOperationRequest
                     * @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): temporal.api.workflowservice.v1.ExecuteMultiOperationRequest;

                    /**
                     * Decodes an ExecuteMultiOperationRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExecuteMultiOperationRequest
                     * @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)): temporal.api.workflowservice.v1.ExecuteMultiOperationRequest;

                    /**
                     * Creates an ExecuteMultiOperationRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExecuteMultiOperationRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ExecuteMultiOperationRequest;

                    /**
                     * Creates a plain object from an ExecuteMultiOperationRequest message. Also converts values to other types if specified.
                     * @param message ExecuteMultiOperationRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ExecuteMultiOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExecuteMultiOperationRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExecuteMultiOperationRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ExecuteMultiOperationRequest {

                    /** Properties of an Operation. */
                    interface IOperation {

                        /**
                         * Additional restrictions:
                         * - setting `cron_schedule` is invalid
                         * - setting `request_eager_execution` is invalid
                         * - setting `workflow_start_delay` is invalid
                         */
                        startWorkflow?: (temporal.api.workflowservice.v1.IStartWorkflowExecutionRequest|null);

                        /**
                         * Additional restrictions:
                         * - setting `first_execution_run_id` is invalid
                         * - setting `workflow_execution.run_id` is invalid
                         */
                        updateWorkflow?: (temporal.api.workflowservice.v1.IUpdateWorkflowExecutionRequest|null);
                    }

                    /** Represents an Operation. */
                    class Operation implements IOperation {

                        /**
                         * Constructs a new Operation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.IOperation);

                        /**
                         * Additional restrictions:
                         * - setting `cron_schedule` is invalid
                         * - setting `request_eager_execution` is invalid
                         * - setting `workflow_start_delay` is invalid
                         */
                        public startWorkflow?: (temporal.api.workflowservice.v1.IStartWorkflowExecutionRequest|null);

                        /**
                         * Additional restrictions:
                         * - setting `first_execution_run_id` is invalid
                         * - setting `workflow_execution.run_id` is invalid
                         */
                        public updateWorkflow?: (temporal.api.workflowservice.v1.IUpdateWorkflowExecutionRequest|null);

                        /** Operation operation. */
                        public operation?: ("startWorkflow"|"updateWorkflow");

                        /**
                         * Creates a new Operation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Operation instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.IOperation): temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.Operation;

                        /**
                         * Encodes the specified Operation message. Does not implicitly {@link temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.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: temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.IOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Operation message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.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: temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.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): temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.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)): temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.Operation;

                        /**
                         * 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 }): temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.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: temporal.api.workflowservice.v1.ExecuteMultiOperationRequest.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 an ExecuteMultiOperationResponse. */
                interface IExecuteMultiOperationResponse {

                    /** ExecuteMultiOperationResponse responses */
                    responses?: (temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.IResponse[]|null);
                }

                /**
                 * IMPORTANT: For [StartWorkflow, UpdateWorkflow] combination ("Update-with-Start") when both
                 * 1. the workflow update for the requested update ID has already completed, and
                 * 2. the workflow for the requested workflow ID has already been closed,
                 * then you'll receive
                 * - an update response containing the update's outcome, and
                 * - a start response with a `status` field that reflects the workflow's current state.
                 */
                class ExecuteMultiOperationResponse implements IExecuteMultiOperationResponse {

                    /**
                     * Constructs a new ExecuteMultiOperationResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IExecuteMultiOperationResponse);

                    /** ExecuteMultiOperationResponse responses. */
                    public responses: temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.IResponse[];

                    /**
                     * Creates a new ExecuteMultiOperationResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExecuteMultiOperationResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IExecuteMultiOperationResponse): temporal.api.workflowservice.v1.ExecuteMultiOperationResponse;

                    /**
                     * Encodes the specified ExecuteMultiOperationResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.verify|verify} messages.
                     * @param message ExecuteMultiOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IExecuteMultiOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExecuteMultiOperationResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.verify|verify} messages.
                     * @param message ExecuteMultiOperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IExecuteMultiOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExecuteMultiOperationResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExecuteMultiOperationResponse
                     * @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): temporal.api.workflowservice.v1.ExecuteMultiOperationResponse;

                    /**
                     * Decodes an ExecuteMultiOperationResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExecuteMultiOperationResponse
                     * @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)): temporal.api.workflowservice.v1.ExecuteMultiOperationResponse;

                    /**
                     * Creates an ExecuteMultiOperationResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExecuteMultiOperationResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ExecuteMultiOperationResponse;

                    /**
                     * Creates a plain object from an ExecuteMultiOperationResponse message. Also converts values to other types if specified.
                     * @param message ExecuteMultiOperationResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ExecuteMultiOperationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExecuteMultiOperationResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExecuteMultiOperationResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ExecuteMultiOperationResponse {

                    /** Properties of a Response. */
                    interface IResponse {

                        /** Response startWorkflow */
                        startWorkflow?: (temporal.api.workflowservice.v1.IStartWorkflowExecutionResponse|null);

                        /** Response updateWorkflow */
                        updateWorkflow?: (temporal.api.workflowservice.v1.IUpdateWorkflowExecutionResponse|null);
                    }

                    /** Represents a Response. */
                    class Response implements IResponse {

                        /**
                         * Constructs a new Response.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.IResponse);

                        /** Response startWorkflow. */
                        public startWorkflow?: (temporal.api.workflowservice.v1.IStartWorkflowExecutionResponse|null);

                        /** Response updateWorkflow. */
                        public updateWorkflow?: (temporal.api.workflowservice.v1.IUpdateWorkflowExecutionResponse|null);

                        /** Response response. */
                        public response?: ("startWorkflow"|"updateWorkflow");

                        /**
                         * Creates a new Response instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Response instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.IResponse): temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.Response;

                        /**
                         * Encodes the specified Response message. Does not implicitly {@link temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.Response.verify|verify} messages.
                         * @param message Response message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.IResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Response message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.Response.verify|verify} messages.
                         * @param message Response message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.IResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Response message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Response
                         * @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): temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.Response;

                        /**
                         * Decodes a Response message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Response
                         * @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)): temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.Response;

                        /**
                         * Creates a Response message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Response
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.Response;

                        /**
                         * Creates a plain object from a Response message. Also converts values to other types if specified.
                         * @param message Response
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.ExecuteMultiOperationResponse.Response, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Response to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Response
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an UpdateActivityOptionsRequest. */
                interface IUpdateActivityOptionsRequest {

                    /** Namespace of the workflow which scheduled this activity */
                    namespace?: (string|null);

                    /** Execution info of the workflow which scheduled this activity */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The identity of the client who initiated this request */
                    identity?: (string|null);

                    /** Activity options. Partial updates are accepted and controlled by update_mask */
                    activityOptions?: (temporal.api.activity.v1.IActivityOptions|null);

                    /** Controls which fields from `activity_options` will be applied */
                    updateMask?: (google.protobuf.IFieldMask|null);

                    /** Only activity with this ID will be updated. */
                    id?: (string|null);

                    /** Update all running activities of this type. */
                    type?: (string|null);

                    /** Update all running activities. */
                    matchAll?: (boolean|null);

                    /**
                     * If set, the activity options will be restored to the default.
                     * Default options are then options activity was created with.
                     * They are part of the first SCHEDULE event.
                     * This flag cannot be combined with any other option; if you supply
                     * restore_original together with other options, the request will be rejected.
                     */
                    restoreOriginal?: (boolean|null);
                }

                /** NOTE: keep in sync with temporal.api.batch.v1.BatchOperationUpdateActivityOptions */
                class UpdateActivityOptionsRequest implements IUpdateActivityOptionsRequest {

                    /**
                     * Constructs a new UpdateActivityOptionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateActivityOptionsRequest);

                    /** Namespace of the workflow which scheduled this activity */
                    public namespace: string;

                    /** Execution info of the workflow which scheduled this activity */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The identity of the client who initiated this request */
                    public identity: string;

                    /** Activity options. Partial updates are accepted and controlled by update_mask */
                    public activityOptions?: (temporal.api.activity.v1.IActivityOptions|null);

                    /** Controls which fields from `activity_options` will be applied */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /** Only activity with this ID will be updated. */
                    public id?: (string|null);

                    /** Update all running activities of this type. */
                    public type?: (string|null);

                    /** Update all running activities. */
                    public matchAll?: (boolean|null);

                    /**
                     * If set, the activity options will be restored to the default.
                     * Default options are then options activity was created with.
                     * They are part of the first SCHEDULE event.
                     * This flag cannot be combined with any other option; if you supply
                     * restore_original together with other options, the request will be rejected.
                     */
                    public restoreOriginal: boolean;

                    /** either activity id, activity type or update_all must be provided */
                    public activity?: ("id"|"type"|"matchAll");

                    /**
                     * Creates a new UpdateActivityOptionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateActivityOptionsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateActivityOptionsRequest): temporal.api.workflowservice.v1.UpdateActivityOptionsRequest;

                    /**
                     * Encodes the specified UpdateActivityOptionsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateActivityOptionsRequest.verify|verify} messages.
                     * @param message UpdateActivityOptionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateActivityOptionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateActivityOptionsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateActivityOptionsRequest.verify|verify} messages.
                     * @param message UpdateActivityOptionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateActivityOptionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateActivityOptionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateActivityOptionsRequest
                     * @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): temporal.api.workflowservice.v1.UpdateActivityOptionsRequest;

                    /**
                     * Decodes an UpdateActivityOptionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateActivityOptionsRequest
                     * @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)): temporal.api.workflowservice.v1.UpdateActivityOptionsRequest;

                    /**
                     * Creates an UpdateActivityOptionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateActivityOptionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateActivityOptionsRequest;

                    /**
                     * Creates a plain object from an UpdateActivityOptionsRequest message. Also converts values to other types if specified.
                     * @param message UpdateActivityOptionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateActivityOptionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateActivityOptionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateActivityOptionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateActivityOptionsResponse. */
                interface IUpdateActivityOptionsResponse {

                    /** Activity options after an update */
                    activityOptions?: (temporal.api.activity.v1.IActivityOptions|null);
                }

                /** Represents an UpdateActivityOptionsResponse. */
                class UpdateActivityOptionsResponse implements IUpdateActivityOptionsResponse {

                    /**
                     * Constructs a new UpdateActivityOptionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateActivityOptionsResponse);

                    /** Activity options after an update */
                    public activityOptions?: (temporal.api.activity.v1.IActivityOptions|null);

                    /**
                     * Creates a new UpdateActivityOptionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateActivityOptionsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateActivityOptionsResponse): temporal.api.workflowservice.v1.UpdateActivityOptionsResponse;

                    /**
                     * Encodes the specified UpdateActivityOptionsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateActivityOptionsResponse.verify|verify} messages.
                     * @param message UpdateActivityOptionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateActivityOptionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateActivityOptionsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateActivityOptionsResponse.verify|verify} messages.
                     * @param message UpdateActivityOptionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateActivityOptionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateActivityOptionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateActivityOptionsResponse
                     * @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): temporal.api.workflowservice.v1.UpdateActivityOptionsResponse;

                    /**
                     * Decodes an UpdateActivityOptionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateActivityOptionsResponse
                     * @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)): temporal.api.workflowservice.v1.UpdateActivityOptionsResponse;

                    /**
                     * Creates an UpdateActivityOptionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateActivityOptionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateActivityOptionsResponse;

                    /**
                     * Creates a plain object from an UpdateActivityOptionsResponse message. Also converts values to other types if specified.
                     * @param message UpdateActivityOptionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateActivityOptionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateActivityOptionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateActivityOptionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PauseActivityRequest. */
                interface IPauseActivityRequest {

                    /** Namespace of the workflow which scheduled this activity. */
                    namespace?: (string|null);

                    /** Execution info of the workflow which scheduled this activity */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** Only the activity with this ID will be paused. */
                    id?: (string|null);

                    /**
                     * Pause all running activities of this type.
                     * Note: Experimental - the behavior of pause by activity type might change in a future release.
                     */
                    type?: (string|null);

                    /** Reason to pause the activity. */
                    reason?: (string|null);
                }

                /** Represents a PauseActivityRequest. */
                class PauseActivityRequest implements IPauseActivityRequest {

                    /**
                     * Constructs a new PauseActivityRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPauseActivityRequest);

                    /** Namespace of the workflow which scheduled this activity. */
                    public namespace: string;

                    /** Execution info of the workflow which scheduled this activity */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** Only the activity with this ID will be paused. */
                    public id?: (string|null);

                    /**
                     * Pause all running activities of this type.
                     * Note: Experimental - the behavior of pause by activity type might change in a future release.
                     */
                    public type?: (string|null);

                    /** Reason to pause the activity. */
                    public reason: string;

                    /** either activity id or activity type must be provided */
                    public activity?: ("id"|"type");

                    /**
                     * Creates a new PauseActivityRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PauseActivityRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPauseActivityRequest): temporal.api.workflowservice.v1.PauseActivityRequest;

                    /**
                     * Encodes the specified PauseActivityRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.PauseActivityRequest.verify|verify} messages.
                     * @param message PauseActivityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPauseActivityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PauseActivityRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PauseActivityRequest.verify|verify} messages.
                     * @param message PauseActivityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPauseActivityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PauseActivityRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PauseActivityRequest
                     * @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): temporal.api.workflowservice.v1.PauseActivityRequest;

                    /**
                     * Decodes a PauseActivityRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PauseActivityRequest
                     * @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)): temporal.api.workflowservice.v1.PauseActivityRequest;

                    /**
                     * Creates a PauseActivityRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PauseActivityRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PauseActivityRequest;

                    /**
                     * Creates a plain object from a PauseActivityRequest message. Also converts values to other types if specified.
                     * @param message PauseActivityRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PauseActivityRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PauseActivityRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PauseActivityRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PauseActivityResponse. */
                interface IPauseActivityResponse {
                }

                /** Represents a PauseActivityResponse. */
                class PauseActivityResponse implements IPauseActivityResponse {

                    /**
                     * Constructs a new PauseActivityResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPauseActivityResponse);

                    /**
                     * Creates a new PauseActivityResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PauseActivityResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPauseActivityResponse): temporal.api.workflowservice.v1.PauseActivityResponse;

                    /**
                     * Encodes the specified PauseActivityResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.PauseActivityResponse.verify|verify} messages.
                     * @param message PauseActivityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPauseActivityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PauseActivityResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PauseActivityResponse.verify|verify} messages.
                     * @param message PauseActivityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPauseActivityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PauseActivityResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PauseActivityResponse
                     * @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): temporal.api.workflowservice.v1.PauseActivityResponse;

                    /**
                     * Decodes a PauseActivityResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PauseActivityResponse
                     * @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)): temporal.api.workflowservice.v1.PauseActivityResponse;

                    /**
                     * Creates a PauseActivityResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PauseActivityResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PauseActivityResponse;

                    /**
                     * Creates a plain object from a PauseActivityResponse message. Also converts values to other types if specified.
                     * @param message PauseActivityResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PauseActivityResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PauseActivityResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PauseActivityResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UnpauseActivityRequest. */
                interface IUnpauseActivityRequest {

                    /** Namespace of the workflow which scheduled this activity. */
                    namespace?: (string|null);

                    /** Execution info of the workflow which scheduled this activity */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** Only the activity with this ID will be unpaused. */
                    id?: (string|null);

                    /** Unpause all running activities with of this type. */
                    type?: (string|null);

                    /** Unpause all running activities. */
                    unpauseAll?: (boolean|null);

                    /** Providing this flag will also reset the number of attempts. */
                    resetAttempts?: (boolean|null);

                    /** Providing this flag will also reset the heartbeat details. */
                    resetHeartbeat?: (boolean|null);

                    /** If set, the activity will start at a random time within the specified jitter duration. */
                    jitter?: (google.protobuf.IDuration|null);
                }

                /** Represents an UnpauseActivityRequest. */
                class UnpauseActivityRequest implements IUnpauseActivityRequest {

                    /**
                     * Constructs a new UnpauseActivityRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUnpauseActivityRequest);

                    /** Namespace of the workflow which scheduled this activity. */
                    public namespace: string;

                    /** Execution info of the workflow which scheduled this activity */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** Only the activity with this ID will be unpaused. */
                    public id?: (string|null);

                    /** Unpause all running activities with of this type. */
                    public type?: (string|null);

                    /** Unpause all running activities. */
                    public unpauseAll?: (boolean|null);

                    /** Providing this flag will also reset the number of attempts. */
                    public resetAttempts: boolean;

                    /** Providing this flag will also reset the heartbeat details. */
                    public resetHeartbeat: boolean;

                    /** If set, the activity will start at a random time within the specified jitter duration. */
                    public jitter?: (google.protobuf.IDuration|null);

                    /** either activity id or activity type must be provided */
                    public activity?: ("id"|"type"|"unpauseAll");

                    /**
                     * Creates a new UnpauseActivityRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UnpauseActivityRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUnpauseActivityRequest): temporal.api.workflowservice.v1.UnpauseActivityRequest;

                    /**
                     * Encodes the specified UnpauseActivityRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UnpauseActivityRequest.verify|verify} messages.
                     * @param message UnpauseActivityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUnpauseActivityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UnpauseActivityRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UnpauseActivityRequest.verify|verify} messages.
                     * @param message UnpauseActivityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUnpauseActivityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UnpauseActivityRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UnpauseActivityRequest
                     * @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): temporal.api.workflowservice.v1.UnpauseActivityRequest;

                    /**
                     * Decodes an UnpauseActivityRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UnpauseActivityRequest
                     * @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)): temporal.api.workflowservice.v1.UnpauseActivityRequest;

                    /**
                     * Creates an UnpauseActivityRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UnpauseActivityRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UnpauseActivityRequest;

                    /**
                     * Creates a plain object from an UnpauseActivityRequest message. Also converts values to other types if specified.
                     * @param message UnpauseActivityRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UnpauseActivityRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UnpauseActivityRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UnpauseActivityRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UnpauseActivityResponse. */
                interface IUnpauseActivityResponse {
                }

                /** Represents an UnpauseActivityResponse. */
                class UnpauseActivityResponse implements IUnpauseActivityResponse {

                    /**
                     * Constructs a new UnpauseActivityResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUnpauseActivityResponse);

                    /**
                     * Creates a new UnpauseActivityResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UnpauseActivityResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUnpauseActivityResponse): temporal.api.workflowservice.v1.UnpauseActivityResponse;

                    /**
                     * Encodes the specified UnpauseActivityResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UnpauseActivityResponse.verify|verify} messages.
                     * @param message UnpauseActivityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUnpauseActivityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UnpauseActivityResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UnpauseActivityResponse.verify|verify} messages.
                     * @param message UnpauseActivityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUnpauseActivityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UnpauseActivityResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UnpauseActivityResponse
                     * @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): temporal.api.workflowservice.v1.UnpauseActivityResponse;

                    /**
                     * Decodes an UnpauseActivityResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UnpauseActivityResponse
                     * @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)): temporal.api.workflowservice.v1.UnpauseActivityResponse;

                    /**
                     * Creates an UnpauseActivityResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UnpauseActivityResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UnpauseActivityResponse;

                    /**
                     * Creates a plain object from an UnpauseActivityResponse message. Also converts values to other types if specified.
                     * @param message UnpauseActivityResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UnpauseActivityResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UnpauseActivityResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UnpauseActivityResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResetActivityRequest. */
                interface IResetActivityRequest {

                    /** Namespace of the workflow which scheduled this activity. */
                    namespace?: (string|null);

                    /** Execution info of the workflow which scheduled this activity */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** Only activity with this ID will be reset. */
                    id?: (string|null);

                    /** Reset all running activities with of this type. */
                    type?: (string|null);

                    /** Reset all running activities. */
                    matchAll?: (boolean|null);

                    /**
                     * Indicates that activity should reset heartbeat details.
                     * This flag will be applied only to the new instance of the activity.
                     */
                    resetHeartbeat?: (boolean|null);

                    /** If activity is paused, it will remain paused after reset */
                    keepPaused?: (boolean|null);

                    /**
                     * If set, and activity is in backoff, the activity will start at a random time within the specified jitter duration.
                     * (unless it is paused and keep_paused is set)
                     */
                    jitter?: (google.protobuf.IDuration|null);

                    /**
                     * If set, the activity options will be restored to the defaults.
                     * Default options are then options activity was created with.
                     * They are part of the first SCHEDULE event.
                     */
                    restoreOriginalOptions?: (boolean|null);
                }

                /** NOTE: keep in sync with temporal.api.batch.v1.BatchOperationResetActivities */
                class ResetActivityRequest implements IResetActivityRequest {

                    /**
                     * Constructs a new ResetActivityRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IResetActivityRequest);

                    /** Namespace of the workflow which scheduled this activity. */
                    public namespace: string;

                    /** Execution info of the workflow which scheduled this activity */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** Only activity with this ID will be reset. */
                    public id?: (string|null);

                    /** Reset all running activities with of this type. */
                    public type?: (string|null);

                    /** Reset all running activities. */
                    public matchAll?: (boolean|null);

                    /**
                     * Indicates that activity should reset heartbeat details.
                     * This flag will be applied only to the new instance of the activity.
                     */
                    public resetHeartbeat: boolean;

                    /** If activity is paused, it will remain paused after reset */
                    public keepPaused: boolean;

                    /**
                     * If set, and activity is in backoff, the activity will start at a random time within the specified jitter duration.
                     * (unless it is paused and keep_paused is set)
                     */
                    public jitter?: (google.protobuf.IDuration|null);

                    /**
                     * If set, the activity options will be restored to the defaults.
                     * Default options are then options activity was created with.
                     * They are part of the first SCHEDULE event.
                     */
                    public restoreOriginalOptions: boolean;

                    /** either activity id, activity type or update_all must be provided */
                    public activity?: ("id"|"type"|"matchAll");

                    /**
                     * Creates a new ResetActivityRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResetActivityRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IResetActivityRequest): temporal.api.workflowservice.v1.ResetActivityRequest;

                    /**
                     * Encodes the specified ResetActivityRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ResetActivityRequest.verify|verify} messages.
                     * @param message ResetActivityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IResetActivityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResetActivityRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ResetActivityRequest.verify|verify} messages.
                     * @param message ResetActivityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IResetActivityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResetActivityRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResetActivityRequest
                     * @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): temporal.api.workflowservice.v1.ResetActivityRequest;

                    /**
                     * Decodes a ResetActivityRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResetActivityRequest
                     * @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)): temporal.api.workflowservice.v1.ResetActivityRequest;

                    /**
                     * Creates a ResetActivityRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResetActivityRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ResetActivityRequest;

                    /**
                     * Creates a plain object from a ResetActivityRequest message. Also converts values to other types if specified.
                     * @param message ResetActivityRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ResetActivityRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResetActivityRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResetActivityRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResetActivityResponse. */
                interface IResetActivityResponse {
                }

                /** Represents a ResetActivityResponse. */
                class ResetActivityResponse implements IResetActivityResponse {

                    /**
                     * Constructs a new ResetActivityResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IResetActivityResponse);

                    /**
                     * Creates a new ResetActivityResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResetActivityResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IResetActivityResponse): temporal.api.workflowservice.v1.ResetActivityResponse;

                    /**
                     * Encodes the specified ResetActivityResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ResetActivityResponse.verify|verify} messages.
                     * @param message ResetActivityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IResetActivityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResetActivityResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ResetActivityResponse.verify|verify} messages.
                     * @param message ResetActivityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IResetActivityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResetActivityResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResetActivityResponse
                     * @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): temporal.api.workflowservice.v1.ResetActivityResponse;

                    /**
                     * Decodes a ResetActivityResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResetActivityResponse
                     * @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)): temporal.api.workflowservice.v1.ResetActivityResponse;

                    /**
                     * Creates a ResetActivityResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResetActivityResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ResetActivityResponse;

                    /**
                     * Creates a plain object from a ResetActivityResponse message. Also converts values to other types if specified.
                     * @param message ResetActivityResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ResetActivityResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResetActivityResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResetActivityResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateWorkflowExecutionOptionsRequest. */
                interface IUpdateWorkflowExecutionOptionsRequest {

                    /** The namespace name of the target Workflow. */
                    namespace?: (string|null);

                    /**
                     * The target Workflow Id and (optionally) a specific Run Id thereof.
                     * (-- api-linter: core::0203::optional=disabled
                     * aip.dev/not-precedent: false positive triggered by the word "optional" --)
                     */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** Workflow Execution options. Partial updates are accepted and controlled by update_mask. */
                    workflowExecutionOptions?: (temporal.api.workflow.v1.IWorkflowExecutionOptions|null);

                    /**
                     * Controls which fields from `workflow_execution_options` will be applied.
                     * To unset a field, set it to null and use the update mask to indicate that it should be mutated.
                     */
                    updateMask?: (google.protobuf.IFieldMask|null);

                    /** Optional. The identity of the client who initiated this request. */
                    identity?: (string|null);
                }

                /**
                 * Keep the parameters in sync with:
                 * - temporal.api.batch.v1.BatchOperationUpdateWorkflowExecutionOptions.
                 * - temporal.api.workflow.v1.PostResetOperation.UpdateWorkflowOptions.
                 */
                class UpdateWorkflowExecutionOptionsRequest implements IUpdateWorkflowExecutionOptionsRequest {

                    /**
                     * Constructs a new UpdateWorkflowExecutionOptionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionOptionsRequest);

                    /** The namespace name of the target Workflow. */
                    public namespace: string;

                    /**
                     * The target Workflow Id and (optionally) a specific Run Id thereof.
                     * (-- api-linter: core::0203::optional=disabled
                     * aip.dev/not-precedent: false positive triggered by the word "optional" --)
                     */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** Workflow Execution options. Partial updates are accepted and controlled by update_mask. */
                    public workflowExecutionOptions?: (temporal.api.workflow.v1.IWorkflowExecutionOptions|null);

                    /**
                     * Controls which fields from `workflow_execution_options` will be applied.
                     * To unset a field, set it to null and use the update mask to indicate that it should be mutated.
                     */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /** Optional. The identity of the client who initiated this request. */
                    public identity: string;

                    /**
                     * Creates a new UpdateWorkflowExecutionOptionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkflowExecutionOptionsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionOptionsRequest): temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsRequest;

                    /**
                     * Encodes the specified UpdateWorkflowExecutionOptionsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsRequest.verify|verify} messages.
                     * @param message UpdateWorkflowExecutionOptionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionOptionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkflowExecutionOptionsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsRequest.verify|verify} messages.
                     * @param message UpdateWorkflowExecutionOptionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionOptionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkflowExecutionOptionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkflowExecutionOptionsRequest
                     * @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): temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsRequest;

                    /**
                     * Decodes an UpdateWorkflowExecutionOptionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkflowExecutionOptionsRequest
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsRequest;

                    /**
                     * Creates an UpdateWorkflowExecutionOptionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkflowExecutionOptionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsRequest;

                    /**
                     * Creates a plain object from an UpdateWorkflowExecutionOptionsRequest message. Also converts values to other types if specified.
                     * @param message UpdateWorkflowExecutionOptionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkflowExecutionOptionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkflowExecutionOptionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateWorkflowExecutionOptionsResponse. */
                interface IUpdateWorkflowExecutionOptionsResponse {

                    /** Workflow Execution options after update. */
                    workflowExecutionOptions?: (temporal.api.workflow.v1.IWorkflowExecutionOptions|null);
                }

                /** Represents an UpdateWorkflowExecutionOptionsResponse. */
                class UpdateWorkflowExecutionOptionsResponse implements IUpdateWorkflowExecutionOptionsResponse {

                    /**
                     * Constructs a new UpdateWorkflowExecutionOptionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionOptionsResponse);

                    /** Workflow Execution options after update. */
                    public workflowExecutionOptions?: (temporal.api.workflow.v1.IWorkflowExecutionOptions|null);

                    /**
                     * Creates a new UpdateWorkflowExecutionOptionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkflowExecutionOptionsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionOptionsResponse): temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsResponse;

                    /**
                     * Encodes the specified UpdateWorkflowExecutionOptionsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsResponse.verify|verify} messages.
                     * @param message UpdateWorkflowExecutionOptionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionOptionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkflowExecutionOptionsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsResponse.verify|verify} messages.
                     * @param message UpdateWorkflowExecutionOptionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionOptionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkflowExecutionOptionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkflowExecutionOptionsResponse
                     * @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): temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsResponse;

                    /**
                     * Decodes an UpdateWorkflowExecutionOptionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkflowExecutionOptionsResponse
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsResponse;

                    /**
                     * Creates an UpdateWorkflowExecutionOptionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkflowExecutionOptionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsResponse;

                    /**
                     * Creates a plain object from an UpdateWorkflowExecutionOptionsResponse message. Also converts values to other types if specified.
                     * @param message UpdateWorkflowExecutionOptionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkflowExecutionOptionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkflowExecutionOptionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeDeploymentRequest. */
                interface IDescribeDeploymentRequest {

                    /** DescribeDeploymentRequest namespace */
                    namespace?: (string|null);

                    /** DescribeDeploymentRequest deployment */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);
                }

                /** [cleanup-wv-pre-release] Pre-release deployment APIs, clean up later */
                class DescribeDeploymentRequest implements IDescribeDeploymentRequest {

                    /**
                     * Constructs a new DescribeDeploymentRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeDeploymentRequest);

                    /** DescribeDeploymentRequest namespace. */
                    public namespace: string;

                    /** DescribeDeploymentRequest deployment. */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /**
                     * Creates a new DescribeDeploymentRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeDeploymentRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeDeploymentRequest): temporal.api.workflowservice.v1.DescribeDeploymentRequest;

                    /**
                     * Encodes the specified DescribeDeploymentRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeDeploymentRequest.verify|verify} messages.
                     * @param message DescribeDeploymentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeDeploymentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeDeploymentRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeDeploymentRequest.verify|verify} messages.
                     * @param message DescribeDeploymentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeDeploymentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeDeploymentRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeDeploymentRequest
                     * @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): temporal.api.workflowservice.v1.DescribeDeploymentRequest;

                    /**
                     * Decodes a DescribeDeploymentRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeDeploymentRequest
                     * @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)): temporal.api.workflowservice.v1.DescribeDeploymentRequest;

                    /**
                     * Creates a DescribeDeploymentRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeDeploymentRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeDeploymentRequest;

                    /**
                     * Creates a plain object from a DescribeDeploymentRequest message. Also converts values to other types if specified.
                     * @param message DescribeDeploymentRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeDeploymentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeDeploymentRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeDeploymentRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeDeploymentResponse. */
                interface IDescribeDeploymentResponse {

                    /** DescribeDeploymentResponse deploymentInfo */
                    deploymentInfo?: (temporal.api.deployment.v1.IDeploymentInfo|null);
                }

                /** [cleanup-wv-pre-release] Pre-release deployment APIs, clean up later */
                class DescribeDeploymentResponse implements IDescribeDeploymentResponse {

                    /**
                     * Constructs a new DescribeDeploymentResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeDeploymentResponse);

                    /** DescribeDeploymentResponse deploymentInfo. */
                    public deploymentInfo?: (temporal.api.deployment.v1.IDeploymentInfo|null);

                    /**
                     * Creates a new DescribeDeploymentResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeDeploymentResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeDeploymentResponse): temporal.api.workflowservice.v1.DescribeDeploymentResponse;

                    /**
                     * Encodes the specified DescribeDeploymentResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeDeploymentResponse.verify|verify} messages.
                     * @param message DescribeDeploymentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeDeploymentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeDeploymentResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeDeploymentResponse.verify|verify} messages.
                     * @param message DescribeDeploymentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeDeploymentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeDeploymentResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeDeploymentResponse
                     * @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): temporal.api.workflowservice.v1.DescribeDeploymentResponse;

                    /**
                     * Decodes a DescribeDeploymentResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeDeploymentResponse
                     * @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)): temporal.api.workflowservice.v1.DescribeDeploymentResponse;

                    /**
                     * Creates a DescribeDeploymentResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeDeploymentResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeDeploymentResponse;

                    /**
                     * Creates a plain object from a DescribeDeploymentResponse message. Also converts values to other types if specified.
                     * @param message DescribeDeploymentResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeDeploymentResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeDeploymentResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeDeploymentResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeWorkerDeploymentVersionRequest. */
                interface IDescribeWorkerDeploymentVersionRequest {

                    /** DescribeWorkerDeploymentVersionRequest namespace */
                    namespace?: (string|null);

                    /** Deprecated. Use `deployment_version`. */
                    version?: (string|null);

                    /** Required. */
                    deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Report stats for task queues which have been polled by this version. */
                    reportTaskQueueStats?: (boolean|null);
                }

                /** Represents a DescribeWorkerDeploymentVersionRequest. */
                class DescribeWorkerDeploymentVersionRequest implements IDescribeWorkerDeploymentVersionRequest {

                    /**
                     * Constructs a new DescribeWorkerDeploymentVersionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentVersionRequest);

                    /** DescribeWorkerDeploymentVersionRequest namespace. */
                    public namespace: string;

                    /** Deprecated. Use `deployment_version`. */
                    public version: string;

                    /** Required. */
                    public deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Report stats for task queues which have been polled by this version. */
                    public reportTaskQueueStats: boolean;

                    /**
                     * Creates a new DescribeWorkerDeploymentVersionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeWorkerDeploymentVersionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentVersionRequest): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionRequest;

                    /**
                     * Encodes the specified DescribeWorkerDeploymentVersionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionRequest.verify|verify} messages.
                     * @param message DescribeWorkerDeploymentVersionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentVersionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeWorkerDeploymentVersionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionRequest.verify|verify} messages.
                     * @param message DescribeWorkerDeploymentVersionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentVersionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeWorkerDeploymentVersionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeWorkerDeploymentVersionRequest
                     * @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): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionRequest;

                    /**
                     * Decodes a DescribeWorkerDeploymentVersionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeWorkerDeploymentVersionRequest
                     * @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)): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionRequest;

                    /**
                     * Creates a DescribeWorkerDeploymentVersionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeWorkerDeploymentVersionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionRequest;

                    /**
                     * Creates a plain object from a DescribeWorkerDeploymentVersionRequest message. Also converts values to other types if specified.
                     * @param message DescribeWorkerDeploymentVersionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeWorkerDeploymentVersionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeWorkerDeploymentVersionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeWorkerDeploymentVersionResponse. */
                interface IDescribeWorkerDeploymentVersionResponse {

                    /** DescribeWorkerDeploymentVersionResponse workerDeploymentVersionInfo */
                    workerDeploymentVersionInfo?: (temporal.api.deployment.v1.IWorkerDeploymentVersionInfo|null);

                    /** All the Task Queues that have ever polled from this Deployment version. */
                    versionTaskQueues?: (temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.IVersionTaskQueue[]|null);
                }

                /** Represents a DescribeWorkerDeploymentVersionResponse. */
                class DescribeWorkerDeploymentVersionResponse implements IDescribeWorkerDeploymentVersionResponse {

                    /**
                     * Constructs a new DescribeWorkerDeploymentVersionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentVersionResponse);

                    /** DescribeWorkerDeploymentVersionResponse workerDeploymentVersionInfo. */
                    public workerDeploymentVersionInfo?: (temporal.api.deployment.v1.IWorkerDeploymentVersionInfo|null);

                    /** All the Task Queues that have ever polled from this Deployment version. */
                    public versionTaskQueues: temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.IVersionTaskQueue[];

                    /**
                     * Creates a new DescribeWorkerDeploymentVersionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeWorkerDeploymentVersionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentVersionResponse): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse;

                    /**
                     * Encodes the specified DescribeWorkerDeploymentVersionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.verify|verify} messages.
                     * @param message DescribeWorkerDeploymentVersionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentVersionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeWorkerDeploymentVersionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.verify|verify} messages.
                     * @param message DescribeWorkerDeploymentVersionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentVersionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeWorkerDeploymentVersionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeWorkerDeploymentVersionResponse
                     * @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): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse;

                    /**
                     * Decodes a DescribeWorkerDeploymentVersionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeWorkerDeploymentVersionResponse
                     * @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)): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse;

                    /**
                     * Creates a DescribeWorkerDeploymentVersionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeWorkerDeploymentVersionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse;

                    /**
                     * Creates a plain object from a DescribeWorkerDeploymentVersionResponse message. Also converts values to other types if specified.
                     * @param message DescribeWorkerDeploymentVersionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeWorkerDeploymentVersionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeWorkerDeploymentVersionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace DescribeWorkerDeploymentVersionResponse {

                    /** Properties of a VersionTaskQueue. */
                    interface IVersionTaskQueue {

                        /** VersionTaskQueue name */
                        name?: (string|null);

                        /** VersionTaskQueue type */
                        type?: (temporal.api.enums.v1.TaskQueueType|null);

                        /** Only set if `report_task_queue_stats` is set on the request. */
                        stats?: (temporal.api.taskqueue.v1.ITaskQueueStats|null);

                        /**
                         * Task queue stats breakdown by priority key. Only contains actively used priority keys.
                         * Only set if `report_task_queue_stats` is set to true in the request.
                         * (-- api-linter: core::0140::prepositions=disabled
                         * aip.dev/not-precedent: "by" is used to clarify the key. --)
                         */
                        statsByPriorityKey?: ({ [k: string]: temporal.api.taskqueue.v1.ITaskQueueStats }|null);
                    }

                    /** (-- api-linter: core::0123::resource-annotation=disabled --) */
                    class VersionTaskQueue implements IVersionTaskQueue {

                        /**
                         * Constructs a new VersionTaskQueue.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.IVersionTaskQueue);

                        /** VersionTaskQueue name. */
                        public name: string;

                        /** VersionTaskQueue type. */
                        public type: temporal.api.enums.v1.TaskQueueType;

                        /** Only set if `report_task_queue_stats` is set on the request. */
                        public stats?: (temporal.api.taskqueue.v1.ITaskQueueStats|null);

                        /**
                         * Task queue stats breakdown by priority key. Only contains actively used priority keys.
                         * Only set if `report_task_queue_stats` is set to true in the request.
                         * (-- api-linter: core::0140::prepositions=disabled
                         * aip.dev/not-precedent: "by" is used to clarify the key. --)
                         */
                        public statsByPriorityKey: { [k: string]: temporal.api.taskqueue.v1.ITaskQueueStats };

                        /**
                         * Creates a new VersionTaskQueue instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VersionTaskQueue instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.IVersionTaskQueue): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.VersionTaskQueue;

                        /**
                         * Encodes the specified VersionTaskQueue message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.VersionTaskQueue.verify|verify} messages.
                         * @param message VersionTaskQueue message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.IVersionTaskQueue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VersionTaskQueue message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.VersionTaskQueue.verify|verify} messages.
                         * @param message VersionTaskQueue message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.IVersionTaskQueue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VersionTaskQueue message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VersionTaskQueue
                         * @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): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.VersionTaskQueue;

                        /**
                         * Decodes a VersionTaskQueue message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VersionTaskQueue
                         * @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)): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.VersionTaskQueue;

                        /**
                         * Creates a VersionTaskQueue message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VersionTaskQueue
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.VersionTaskQueue;

                        /**
                         * Creates a plain object from a VersionTaskQueue message. Also converts values to other types if specified.
                         * @param message VersionTaskQueue
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse.VersionTaskQueue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VersionTaskQueue to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VersionTaskQueue
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a DescribeWorkerDeploymentRequest. */
                interface IDescribeWorkerDeploymentRequest {

                    /** DescribeWorkerDeploymentRequest namespace */
                    namespace?: (string|null);

                    /** DescribeWorkerDeploymentRequest deploymentName */
                    deploymentName?: (string|null);
                }

                /** Represents a DescribeWorkerDeploymentRequest. */
                class DescribeWorkerDeploymentRequest implements IDescribeWorkerDeploymentRequest {

                    /**
                     * Constructs a new DescribeWorkerDeploymentRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentRequest);

                    /** DescribeWorkerDeploymentRequest namespace. */
                    public namespace: string;

                    /** DescribeWorkerDeploymentRequest deploymentName. */
                    public deploymentName: string;

                    /**
                     * Creates a new DescribeWorkerDeploymentRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeWorkerDeploymentRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentRequest): temporal.api.workflowservice.v1.DescribeWorkerDeploymentRequest;

                    /**
                     * Encodes the specified DescribeWorkerDeploymentRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerDeploymentRequest.verify|verify} messages.
                     * @param message DescribeWorkerDeploymentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeWorkerDeploymentRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerDeploymentRequest.verify|verify} messages.
                     * @param message DescribeWorkerDeploymentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeWorkerDeploymentRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeWorkerDeploymentRequest
                     * @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): temporal.api.workflowservice.v1.DescribeWorkerDeploymentRequest;

                    /**
                     * Decodes a DescribeWorkerDeploymentRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeWorkerDeploymentRequest
                     * @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)): temporal.api.workflowservice.v1.DescribeWorkerDeploymentRequest;

                    /**
                     * Creates a DescribeWorkerDeploymentRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeWorkerDeploymentRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeWorkerDeploymentRequest;

                    /**
                     * Creates a plain object from a DescribeWorkerDeploymentRequest message. Also converts values to other types if specified.
                     * @param message DescribeWorkerDeploymentRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeWorkerDeploymentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeWorkerDeploymentRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeWorkerDeploymentRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeWorkerDeploymentResponse. */
                interface IDescribeWorkerDeploymentResponse {

                    /**
                     * This value is returned so that it can be optionally passed to APIs
                     * that write to the Worker Deployment state to ensure that the state
                     * did not change between this read and a future write.
                     */
                    conflictToken?: (Uint8Array|null);

                    /** DescribeWorkerDeploymentResponse workerDeploymentInfo */
                    workerDeploymentInfo?: (temporal.api.deployment.v1.IWorkerDeploymentInfo|null);
                }

                /** Represents a DescribeWorkerDeploymentResponse. */
                class DescribeWorkerDeploymentResponse implements IDescribeWorkerDeploymentResponse {

                    /**
                     * Constructs a new DescribeWorkerDeploymentResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentResponse);

                    /**
                     * This value is returned so that it can be optionally passed to APIs
                     * that write to the Worker Deployment state to ensure that the state
                     * did not change between this read and a future write.
                     */
                    public conflictToken: Uint8Array;

                    /** DescribeWorkerDeploymentResponse workerDeploymentInfo. */
                    public workerDeploymentInfo?: (temporal.api.deployment.v1.IWorkerDeploymentInfo|null);

                    /**
                     * Creates a new DescribeWorkerDeploymentResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeWorkerDeploymentResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentResponse): temporal.api.workflowservice.v1.DescribeWorkerDeploymentResponse;

                    /**
                     * Encodes the specified DescribeWorkerDeploymentResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerDeploymentResponse.verify|verify} messages.
                     * @param message DescribeWorkerDeploymentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeWorkerDeploymentResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerDeploymentResponse.verify|verify} messages.
                     * @param message DescribeWorkerDeploymentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeWorkerDeploymentResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeWorkerDeploymentResponse
                     * @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): temporal.api.workflowservice.v1.DescribeWorkerDeploymentResponse;

                    /**
                     * Decodes a DescribeWorkerDeploymentResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeWorkerDeploymentResponse
                     * @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)): temporal.api.workflowservice.v1.DescribeWorkerDeploymentResponse;

                    /**
                     * Creates a DescribeWorkerDeploymentResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeWorkerDeploymentResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeWorkerDeploymentResponse;

                    /**
                     * Creates a plain object from a DescribeWorkerDeploymentResponse message. Also converts values to other types if specified.
                     * @param message DescribeWorkerDeploymentResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeWorkerDeploymentResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeWorkerDeploymentResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeWorkerDeploymentResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListDeploymentsRequest. */
                interface IListDeploymentsRequest {

                    /** ListDeploymentsRequest namespace */
                    namespace?: (string|null);

                    /** ListDeploymentsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListDeploymentsRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);

                    /** Optional. Use to filter based on exact series name match. */
                    seriesName?: (string|null);
                }

                /** [cleanup-wv-pre-release] Pre-release deployment APIs, clean up later */
                class ListDeploymentsRequest implements IListDeploymentsRequest {

                    /**
                     * Constructs a new ListDeploymentsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListDeploymentsRequest);

                    /** ListDeploymentsRequest namespace. */
                    public namespace: string;

                    /** ListDeploymentsRequest pageSize. */
                    public pageSize: number;

                    /** ListDeploymentsRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /** Optional. Use to filter based on exact series name match. */
                    public seriesName: string;

                    /**
                     * Creates a new ListDeploymentsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListDeploymentsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListDeploymentsRequest): temporal.api.workflowservice.v1.ListDeploymentsRequest;

                    /**
                     * Encodes the specified ListDeploymentsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListDeploymentsRequest.verify|verify} messages.
                     * @param message ListDeploymentsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListDeploymentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListDeploymentsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListDeploymentsRequest.verify|verify} messages.
                     * @param message ListDeploymentsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListDeploymentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListDeploymentsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListDeploymentsRequest
                     * @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): temporal.api.workflowservice.v1.ListDeploymentsRequest;

                    /**
                     * Decodes a ListDeploymentsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListDeploymentsRequest
                     * @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)): temporal.api.workflowservice.v1.ListDeploymentsRequest;

                    /**
                     * Creates a ListDeploymentsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListDeploymentsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListDeploymentsRequest;

                    /**
                     * Creates a plain object from a ListDeploymentsRequest message. Also converts values to other types if specified.
                     * @param message ListDeploymentsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListDeploymentsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListDeploymentsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListDeploymentsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListDeploymentsResponse. */
                interface IListDeploymentsResponse {

                    /** ListDeploymentsResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);

                    /** ListDeploymentsResponse deployments */
                    deployments?: (temporal.api.deployment.v1.IDeploymentListInfo[]|null);
                }

                /** [cleanup-wv-pre-release] Pre-release deployment APIs, clean up later */
                class ListDeploymentsResponse implements IListDeploymentsResponse {

                    /**
                     * Constructs a new ListDeploymentsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListDeploymentsResponse);

                    /** ListDeploymentsResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /** ListDeploymentsResponse deployments. */
                    public deployments: temporal.api.deployment.v1.IDeploymentListInfo[];

                    /**
                     * Creates a new ListDeploymentsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListDeploymentsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListDeploymentsResponse): temporal.api.workflowservice.v1.ListDeploymentsResponse;

                    /**
                     * Encodes the specified ListDeploymentsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListDeploymentsResponse.verify|verify} messages.
                     * @param message ListDeploymentsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListDeploymentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListDeploymentsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListDeploymentsResponse.verify|verify} messages.
                     * @param message ListDeploymentsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListDeploymentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListDeploymentsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListDeploymentsResponse
                     * @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): temporal.api.workflowservice.v1.ListDeploymentsResponse;

                    /**
                     * Decodes a ListDeploymentsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListDeploymentsResponse
                     * @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)): temporal.api.workflowservice.v1.ListDeploymentsResponse;

                    /**
                     * Creates a ListDeploymentsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListDeploymentsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListDeploymentsResponse;

                    /**
                     * Creates a plain object from a ListDeploymentsResponse message. Also converts values to other types if specified.
                     * @param message ListDeploymentsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListDeploymentsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListDeploymentsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListDeploymentsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetCurrentDeploymentRequest. */
                interface ISetCurrentDeploymentRequest {

                    /** SetCurrentDeploymentRequest namespace */
                    namespace?: (string|null);

                    /** SetCurrentDeploymentRequest deployment */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Optional. The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /**
                     * Optional. Use to add or remove user-defined metadata entries. Metadata entries are exposed
                     * when describing a deployment. It is a good place for information such as operator name,
                     * links to internal deployment pipelines, etc.
                     */
                    updateMetadata?: (temporal.api.deployment.v1.IUpdateDeploymentMetadata|null);
                }

                /** [cleanup-wv-pre-release] Pre-release deployment APIs, clean up later */
                class SetCurrentDeploymentRequest implements ISetCurrentDeploymentRequest {

                    /**
                     * Constructs a new SetCurrentDeploymentRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISetCurrentDeploymentRequest);

                    /** SetCurrentDeploymentRequest namespace. */
                    public namespace: string;

                    /** SetCurrentDeploymentRequest deployment. */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Optional. The identity of the client who initiated this request. */
                    public identity: string;

                    /**
                     * Optional. Use to add or remove user-defined metadata entries. Metadata entries are exposed
                     * when describing a deployment. It is a good place for information such as operator name,
                     * links to internal deployment pipelines, etc.
                     */
                    public updateMetadata?: (temporal.api.deployment.v1.IUpdateDeploymentMetadata|null);

                    /**
                     * Creates a new SetCurrentDeploymentRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetCurrentDeploymentRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISetCurrentDeploymentRequest): temporal.api.workflowservice.v1.SetCurrentDeploymentRequest;

                    /**
                     * Encodes the specified SetCurrentDeploymentRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.SetCurrentDeploymentRequest.verify|verify} messages.
                     * @param message SetCurrentDeploymentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISetCurrentDeploymentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetCurrentDeploymentRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SetCurrentDeploymentRequest.verify|verify} messages.
                     * @param message SetCurrentDeploymentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISetCurrentDeploymentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetCurrentDeploymentRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetCurrentDeploymentRequest
                     * @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): temporal.api.workflowservice.v1.SetCurrentDeploymentRequest;

                    /**
                     * Decodes a SetCurrentDeploymentRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetCurrentDeploymentRequest
                     * @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)): temporal.api.workflowservice.v1.SetCurrentDeploymentRequest;

                    /**
                     * Creates a SetCurrentDeploymentRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetCurrentDeploymentRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SetCurrentDeploymentRequest;

                    /**
                     * Creates a plain object from a SetCurrentDeploymentRequest message. Also converts values to other types if specified.
                     * @param message SetCurrentDeploymentRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SetCurrentDeploymentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetCurrentDeploymentRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetCurrentDeploymentRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetCurrentDeploymentResponse. */
                interface ISetCurrentDeploymentResponse {

                    /** SetCurrentDeploymentResponse currentDeploymentInfo */
                    currentDeploymentInfo?: (temporal.api.deployment.v1.IDeploymentInfo|null);

                    /** Info of the deployment that was current before executing this operation. */
                    previousDeploymentInfo?: (temporal.api.deployment.v1.IDeploymentInfo|null);
                }

                /** [cleanup-wv-pre-release] Pre-release deployment APIs, clean up later */
                class SetCurrentDeploymentResponse implements ISetCurrentDeploymentResponse {

                    /**
                     * Constructs a new SetCurrentDeploymentResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISetCurrentDeploymentResponse);

                    /** SetCurrentDeploymentResponse currentDeploymentInfo. */
                    public currentDeploymentInfo?: (temporal.api.deployment.v1.IDeploymentInfo|null);

                    /** Info of the deployment that was current before executing this operation. */
                    public previousDeploymentInfo?: (temporal.api.deployment.v1.IDeploymentInfo|null);

                    /**
                     * Creates a new SetCurrentDeploymentResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetCurrentDeploymentResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISetCurrentDeploymentResponse): temporal.api.workflowservice.v1.SetCurrentDeploymentResponse;

                    /**
                     * Encodes the specified SetCurrentDeploymentResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.SetCurrentDeploymentResponse.verify|verify} messages.
                     * @param message SetCurrentDeploymentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISetCurrentDeploymentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetCurrentDeploymentResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SetCurrentDeploymentResponse.verify|verify} messages.
                     * @param message SetCurrentDeploymentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISetCurrentDeploymentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetCurrentDeploymentResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetCurrentDeploymentResponse
                     * @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): temporal.api.workflowservice.v1.SetCurrentDeploymentResponse;

                    /**
                     * Decodes a SetCurrentDeploymentResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetCurrentDeploymentResponse
                     * @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)): temporal.api.workflowservice.v1.SetCurrentDeploymentResponse;

                    /**
                     * Creates a SetCurrentDeploymentResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetCurrentDeploymentResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SetCurrentDeploymentResponse;

                    /**
                     * Creates a plain object from a SetCurrentDeploymentResponse message. Also converts values to other types if specified.
                     * @param message SetCurrentDeploymentResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SetCurrentDeploymentResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetCurrentDeploymentResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetCurrentDeploymentResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetWorkerDeploymentCurrentVersionRequest. */
                interface ISetWorkerDeploymentCurrentVersionRequest {

                    /** SetWorkerDeploymentCurrentVersionRequest namespace */
                    namespace?: (string|null);

                    /** SetWorkerDeploymentCurrentVersionRequest deploymentName */
                    deploymentName?: (string|null);

                    /** Deprecated. Use `build_id`. */
                    version?: (string|null);

                    /**
                     * The build id of the Version that you want to set as Current.
                     * Pass an empty value to set the Current Version to nil.
                     * A nil Current Version represents all the unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.)
                     */
                    buildId?: (string|null);

                    /**
                     * Optional. This can be the value of conflict_token from a Describe, or another Worker
                     * Deployment API. Passing a non-nil conflict token will cause this request to fail if the
                     * Deployment's configuration has been modified between the API call that generated the
                     * token and this one.
                     */
                    conflictToken?: (Uint8Array|null);

                    /** Optional. The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /**
                     * Optional. By default this request would be rejected if not all the expected Task Queues are
                     * being polled by the new Version, to protect against accidental removal of Task Queues, or
                     * worker health issues. Pass `true` here to bypass this protection.
                     * The set of expected Task Queues is the set of all the Task Queues that were ever poller by
                     * the existing Current Version of the Deployment, with the following exclusions:
                     * - Task Queues that are not used anymore (inferred by having empty backlog and a task
                     * add_rate of 0.)
                     * - Task Queues that are moved to another Worker Deployment (inferred by the Task Queue
                     * having a different Current Version than the Current Version of this deployment.)
                     * WARNING: Do not set this flag unless you are sure that the missing task queue pollers are not
                     * needed. If the request is unexpectedly rejected due to missing pollers, then that means the
                     * pollers have not reached to the server yet. Only set this if you expect those pollers to
                     * never arrive.
                     */
                    ignoreMissingTaskQueues?: (boolean|null);

                    /**
                     * Optional. By default this request will be rejected if no pollers have been seen for the proposed
                     * Current Version, in order to protect users from routing tasks to pollers that do not exist, leading
                     * to possible timeouts. Pass `true` here to bypass this protection.
                     */
                    allowNoPollers?: (boolean|null);
                }

                /** Set/unset the Current Version of a Worker Deployment. */
                class SetWorkerDeploymentCurrentVersionRequest implements ISetWorkerDeploymentCurrentVersionRequest {

                    /**
                     * Constructs a new SetWorkerDeploymentCurrentVersionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentCurrentVersionRequest);

                    /** SetWorkerDeploymentCurrentVersionRequest namespace. */
                    public namespace: string;

                    /** SetWorkerDeploymentCurrentVersionRequest deploymentName. */
                    public deploymentName: string;

                    /** Deprecated. Use `build_id`. */
                    public version: string;

                    /**
                     * The build id of the Version that you want to set as Current.
                     * Pass an empty value to set the Current Version to nil.
                     * A nil Current Version represents all the unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.)
                     */
                    public buildId: string;

                    /**
                     * Optional. This can be the value of conflict_token from a Describe, or another Worker
                     * Deployment API. Passing a non-nil conflict token will cause this request to fail if the
                     * Deployment's configuration has been modified between the API call that generated the
                     * token and this one.
                     */
                    public conflictToken: Uint8Array;

                    /** Optional. The identity of the client who initiated this request. */
                    public identity: string;

                    /**
                     * Optional. By default this request would be rejected if not all the expected Task Queues are
                     * being polled by the new Version, to protect against accidental removal of Task Queues, or
                     * worker health issues. Pass `true` here to bypass this protection.
                     * The set of expected Task Queues is the set of all the Task Queues that were ever poller by
                     * the existing Current Version of the Deployment, with the following exclusions:
                     * - Task Queues that are not used anymore (inferred by having empty backlog and a task
                     * add_rate of 0.)
                     * - Task Queues that are moved to another Worker Deployment (inferred by the Task Queue
                     * having a different Current Version than the Current Version of this deployment.)
                     * WARNING: Do not set this flag unless you are sure that the missing task queue pollers are not
                     * needed. If the request is unexpectedly rejected due to missing pollers, then that means the
                     * pollers have not reached to the server yet. Only set this if you expect those pollers to
                     * never arrive.
                     */
                    public ignoreMissingTaskQueues: boolean;

                    /**
                     * Optional. By default this request will be rejected if no pollers have been seen for the proposed
                     * Current Version, in order to protect users from routing tasks to pollers that do not exist, leading
                     * to possible timeouts. Pass `true` here to bypass this protection.
                     */
                    public allowNoPollers: boolean;

                    /**
                     * Creates a new SetWorkerDeploymentCurrentVersionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetWorkerDeploymentCurrentVersionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentCurrentVersionRequest): temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionRequest;

                    /**
                     * Encodes the specified SetWorkerDeploymentCurrentVersionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionRequest.verify|verify} messages.
                     * @param message SetWorkerDeploymentCurrentVersionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentCurrentVersionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetWorkerDeploymentCurrentVersionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionRequest.verify|verify} messages.
                     * @param message SetWorkerDeploymentCurrentVersionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentCurrentVersionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetWorkerDeploymentCurrentVersionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetWorkerDeploymentCurrentVersionRequest
                     * @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): temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionRequest;

                    /**
                     * Decodes a SetWorkerDeploymentCurrentVersionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetWorkerDeploymentCurrentVersionRequest
                     * @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)): temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionRequest;

                    /**
                     * Creates a SetWorkerDeploymentCurrentVersionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetWorkerDeploymentCurrentVersionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionRequest;

                    /**
                     * Creates a plain object from a SetWorkerDeploymentCurrentVersionRequest message. Also converts values to other types if specified.
                     * @param message SetWorkerDeploymentCurrentVersionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetWorkerDeploymentCurrentVersionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetWorkerDeploymentCurrentVersionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetWorkerDeploymentCurrentVersionResponse. */
                interface ISetWorkerDeploymentCurrentVersionResponse {

                    /**
                     * This value is returned so that it can be optionally passed to APIs
                     * that write to the Worker Deployment state to ensure that the state
                     * did not change between this API call and a future write.
                     */
                    conflictToken?: (Uint8Array|null);

                    /** Deprecated. Use `previous_deployment_version`. */
                    previousVersion?: (string|null);

                    /**
                     * The version that was current before executing this operation.
                     * Deprecated in favor of idempotency of the API. Use `DescribeWorkerDeployment` to get the
                     * Current version info before calling this API. By passing the `conflict_token` got from the
                     * `DescribeWorkerDeployment` call to this API you can ensure there is no interfering changes
                     * between the two calls.
                     */
                    previousDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);
                }

                /** Represents a SetWorkerDeploymentCurrentVersionResponse. */
                class SetWorkerDeploymentCurrentVersionResponse implements ISetWorkerDeploymentCurrentVersionResponse {

                    /**
                     * Constructs a new SetWorkerDeploymentCurrentVersionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentCurrentVersionResponse);

                    /**
                     * This value is returned so that it can be optionally passed to APIs
                     * that write to the Worker Deployment state to ensure that the state
                     * did not change between this API call and a future write.
                     */
                    public conflictToken: Uint8Array;

                    /** Deprecated. Use `previous_deployment_version`. */
                    public previousVersion: string;

                    /**
                     * The version that was current before executing this operation.
                     * Deprecated in favor of idempotency of the API. Use `DescribeWorkerDeployment` to get the
                     * Current version info before calling this API. By passing the `conflict_token` got from the
                     * `DescribeWorkerDeployment` call to this API you can ensure there is no interfering changes
                     * between the two calls.
                     */
                    public previousDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * Creates a new SetWorkerDeploymentCurrentVersionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetWorkerDeploymentCurrentVersionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentCurrentVersionResponse): temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionResponse;

                    /**
                     * Encodes the specified SetWorkerDeploymentCurrentVersionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionResponse.verify|verify} messages.
                     * @param message SetWorkerDeploymentCurrentVersionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentCurrentVersionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetWorkerDeploymentCurrentVersionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionResponse.verify|verify} messages.
                     * @param message SetWorkerDeploymentCurrentVersionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentCurrentVersionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetWorkerDeploymentCurrentVersionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetWorkerDeploymentCurrentVersionResponse
                     * @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): temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionResponse;

                    /**
                     * Decodes a SetWorkerDeploymentCurrentVersionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetWorkerDeploymentCurrentVersionResponse
                     * @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)): temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionResponse;

                    /**
                     * Creates a SetWorkerDeploymentCurrentVersionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetWorkerDeploymentCurrentVersionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionResponse;

                    /**
                     * Creates a plain object from a SetWorkerDeploymentCurrentVersionResponse message. Also converts values to other types if specified.
                     * @param message SetWorkerDeploymentCurrentVersionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetWorkerDeploymentCurrentVersionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetWorkerDeploymentCurrentVersionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetWorkerDeploymentRampingVersionRequest. */
                interface ISetWorkerDeploymentRampingVersionRequest {

                    /** SetWorkerDeploymentRampingVersionRequest namespace */
                    namespace?: (string|null);

                    /** SetWorkerDeploymentRampingVersionRequest deploymentName */
                    deploymentName?: (string|null);

                    /** Deprecated. Use `build_id`. */
                    version?: (string|null);

                    /**
                     * The build id of the Version that you want to ramp traffic to.
                     * Pass an empty value to set the Ramping Version to nil.
                     * A nil Ramping Version represents all the unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.)
                     */
                    buildId?: (string|null);

                    /** Ramp percentage to set. Valid range: [0,100]. */
                    percentage?: (number|null);

                    /**
                     * Optional. This can be the value of conflict_token from a Describe, or another Worker
                     * Deployment API. Passing a non-nil conflict token will cause this request to fail if the
                     * Deployment's configuration has been modified between the API call that generated the
                     * token and this one.
                     */
                    conflictToken?: (Uint8Array|null);

                    /** Optional. The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /**
                     * Optional. By default this request would be rejected if not all the expected Task Queues are
                     * being polled by the new Version, to protect against accidental removal of Task Queues, or
                     * worker health issues. Pass `true` here to bypass this protection.
                     * The set of expected Task Queues equals to all the Task Queues ever polled from the existing
                     * Current Version of the Deployment, with the following exclusions:
                     * - Task Queues that are not used anymore (inferred by having empty backlog and a task
                     * add_rate of 0.)
                     * - Task Queues that are moved to another Worker Deployment (inferred by the Task Queue
                     * having a different Current Version than the Current Version of this deployment.)
                     * WARNING: Do not set this flag unless you are sure that the missing task queue poller are not
                     * needed. If the request is unexpectedly rejected due to missing pollers, then that means the
                     * pollers have not reached to the server yet. Only set this if you expect those pollers to
                     * never arrive.
                     * Note: this check only happens when the ramping version is about to change, not every time
                     * that the percentage changes. Also note that the check is against the deployment's Current
                     * Version, not the previous Ramping Version.
                     */
                    ignoreMissingTaskQueues?: (boolean|null);

                    /**
                     * Optional. By default this request will be rejected if no pollers have been seen for the proposed
                     * Current Version, in order to protect users from routing tasks to pollers that do not exist, leading
                     * to possible timeouts. Pass `true` here to bypass this protection.
                     */
                    allowNoPollers?: (boolean|null);
                }

                /** Set/unset the Ramping Version of a Worker Deployment and its ramp percentage. */
                class SetWorkerDeploymentRampingVersionRequest implements ISetWorkerDeploymentRampingVersionRequest {

                    /**
                     * Constructs a new SetWorkerDeploymentRampingVersionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentRampingVersionRequest);

                    /** SetWorkerDeploymentRampingVersionRequest namespace. */
                    public namespace: string;

                    /** SetWorkerDeploymentRampingVersionRequest deploymentName. */
                    public deploymentName: string;

                    /** Deprecated. Use `build_id`. */
                    public version: string;

                    /**
                     * The build id of the Version that you want to ramp traffic to.
                     * Pass an empty value to set the Ramping Version to nil.
                     * A nil Ramping Version represents all the unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.)
                     */
                    public buildId: string;

                    /** Ramp percentage to set. Valid range: [0,100]. */
                    public percentage: number;

                    /**
                     * Optional. This can be the value of conflict_token from a Describe, or another Worker
                     * Deployment API. Passing a non-nil conflict token will cause this request to fail if the
                     * Deployment's configuration has been modified between the API call that generated the
                     * token and this one.
                     */
                    public conflictToken: Uint8Array;

                    /** Optional. The identity of the client who initiated this request. */
                    public identity: string;

                    /**
                     * Optional. By default this request would be rejected if not all the expected Task Queues are
                     * being polled by the new Version, to protect against accidental removal of Task Queues, or
                     * worker health issues. Pass `true` here to bypass this protection.
                     * The set of expected Task Queues equals to all the Task Queues ever polled from the existing
                     * Current Version of the Deployment, with the following exclusions:
                     * - Task Queues that are not used anymore (inferred by having empty backlog and a task
                     * add_rate of 0.)
                     * - Task Queues that are moved to another Worker Deployment (inferred by the Task Queue
                     * having a different Current Version than the Current Version of this deployment.)
                     * WARNING: Do not set this flag unless you are sure that the missing task queue poller are not
                     * needed. If the request is unexpectedly rejected due to missing pollers, then that means the
                     * pollers have not reached to the server yet. Only set this if you expect those pollers to
                     * never arrive.
                     * Note: this check only happens when the ramping version is about to change, not every time
                     * that the percentage changes. Also note that the check is against the deployment's Current
                     * Version, not the previous Ramping Version.
                     */
                    public ignoreMissingTaskQueues: boolean;

                    /**
                     * Optional. By default this request will be rejected if no pollers have been seen for the proposed
                     * Current Version, in order to protect users from routing tasks to pollers that do not exist, leading
                     * to possible timeouts. Pass `true` here to bypass this protection.
                     */
                    public allowNoPollers: boolean;

                    /**
                     * Creates a new SetWorkerDeploymentRampingVersionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetWorkerDeploymentRampingVersionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentRampingVersionRequest): temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionRequest;

                    /**
                     * Encodes the specified SetWorkerDeploymentRampingVersionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionRequest.verify|verify} messages.
                     * @param message SetWorkerDeploymentRampingVersionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentRampingVersionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetWorkerDeploymentRampingVersionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionRequest.verify|verify} messages.
                     * @param message SetWorkerDeploymentRampingVersionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentRampingVersionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetWorkerDeploymentRampingVersionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetWorkerDeploymentRampingVersionRequest
                     * @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): temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionRequest;

                    /**
                     * Decodes a SetWorkerDeploymentRampingVersionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetWorkerDeploymentRampingVersionRequest
                     * @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)): temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionRequest;

                    /**
                     * Creates a SetWorkerDeploymentRampingVersionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetWorkerDeploymentRampingVersionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionRequest;

                    /**
                     * Creates a plain object from a SetWorkerDeploymentRampingVersionRequest message. Also converts values to other types if specified.
                     * @param message SetWorkerDeploymentRampingVersionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetWorkerDeploymentRampingVersionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetWorkerDeploymentRampingVersionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetWorkerDeploymentRampingVersionResponse. */
                interface ISetWorkerDeploymentRampingVersionResponse {

                    /**
                     * This value is returned so that it can be optionally passed to APIs
                     * that write to the Worker Deployment state to ensure that the state
                     * did not change between this API call and a future write.
                     */
                    conflictToken?: (Uint8Array|null);

                    /** Deprecated. Use `previous_deployment_version`. */
                    previousVersion?: (string|null);

                    /**
                     * The version that was ramping before executing this operation.
                     * Deprecated in favor of idempotency of the API. Use `DescribeWorkerDeployment` to get the
                     * Ramping version info before calling this API. By passing the `conflict_token` got from the
                     * `DescribeWorkerDeployment` call to this API you can ensure there is no interfering changes
                     * between the two calls.
                     */
                    previousDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * The ramping version percentage before executing this operation.
                     * Deprecated in favor of idempotency of the API. Use `DescribeWorkerDeployment` to get the
                     * Ramping version info before calling this API. By passing the `conflict_token` got from the
                     * `DescribeWorkerDeployment` call to this API you can ensure there is no interfering changes
                     * between the two calls.
                     */
                    previousPercentage?: (number|null);
                }

                /** Represents a SetWorkerDeploymentRampingVersionResponse. */
                class SetWorkerDeploymentRampingVersionResponse implements ISetWorkerDeploymentRampingVersionResponse {

                    /**
                     * Constructs a new SetWorkerDeploymentRampingVersionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentRampingVersionResponse);

                    /**
                     * This value is returned so that it can be optionally passed to APIs
                     * that write to the Worker Deployment state to ensure that the state
                     * did not change between this API call and a future write.
                     */
                    public conflictToken: Uint8Array;

                    /** Deprecated. Use `previous_deployment_version`. */
                    public previousVersion: string;

                    /**
                     * The version that was ramping before executing this operation.
                     * Deprecated in favor of idempotency of the API. Use `DescribeWorkerDeployment` to get the
                     * Ramping version info before calling this API. By passing the `conflict_token` got from the
                     * `DescribeWorkerDeployment` call to this API you can ensure there is no interfering changes
                     * between the two calls.
                     */
                    public previousDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * The ramping version percentage before executing this operation.
                     * Deprecated in favor of idempotency of the API. Use `DescribeWorkerDeployment` to get the
                     * Ramping version info before calling this API. By passing the `conflict_token` got from the
                     * `DescribeWorkerDeployment` call to this API you can ensure there is no interfering changes
                     * between the two calls.
                     */
                    public previousPercentage: number;

                    /**
                     * Creates a new SetWorkerDeploymentRampingVersionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetWorkerDeploymentRampingVersionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentRampingVersionResponse): temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionResponse;

                    /**
                     * Encodes the specified SetWorkerDeploymentRampingVersionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionResponse.verify|verify} messages.
                     * @param message SetWorkerDeploymentRampingVersionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentRampingVersionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetWorkerDeploymentRampingVersionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionResponse.verify|verify} messages.
                     * @param message SetWorkerDeploymentRampingVersionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentRampingVersionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetWorkerDeploymentRampingVersionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetWorkerDeploymentRampingVersionResponse
                     * @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): temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionResponse;

                    /**
                     * Decodes a SetWorkerDeploymentRampingVersionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetWorkerDeploymentRampingVersionResponse
                     * @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)): temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionResponse;

                    /**
                     * Creates a SetWorkerDeploymentRampingVersionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetWorkerDeploymentRampingVersionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionResponse;

                    /**
                     * Creates a plain object from a SetWorkerDeploymentRampingVersionResponse message. Also converts values to other types if specified.
                     * @param message SetWorkerDeploymentRampingVersionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetWorkerDeploymentRampingVersionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetWorkerDeploymentRampingVersionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListWorkerDeploymentsRequest. */
                interface IListWorkerDeploymentsRequest {

                    /** ListWorkerDeploymentsRequest namespace */
                    namespace?: (string|null);

                    /** ListWorkerDeploymentsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListWorkerDeploymentsRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListWorkerDeploymentsRequest. */
                class ListWorkerDeploymentsRequest implements IListWorkerDeploymentsRequest {

                    /**
                     * Constructs a new ListWorkerDeploymentsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListWorkerDeploymentsRequest);

                    /** ListWorkerDeploymentsRequest namespace. */
                    public namespace: string;

                    /** ListWorkerDeploymentsRequest pageSize. */
                    public pageSize: number;

                    /** ListWorkerDeploymentsRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListWorkerDeploymentsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListWorkerDeploymentsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListWorkerDeploymentsRequest): temporal.api.workflowservice.v1.ListWorkerDeploymentsRequest;

                    /**
                     * Encodes the specified ListWorkerDeploymentsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkerDeploymentsRequest.verify|verify} messages.
                     * @param message ListWorkerDeploymentsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListWorkerDeploymentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListWorkerDeploymentsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkerDeploymentsRequest.verify|verify} messages.
                     * @param message ListWorkerDeploymentsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListWorkerDeploymentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListWorkerDeploymentsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListWorkerDeploymentsRequest
                     * @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): temporal.api.workflowservice.v1.ListWorkerDeploymentsRequest;

                    /**
                     * Decodes a ListWorkerDeploymentsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListWorkerDeploymentsRequest
                     * @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)): temporal.api.workflowservice.v1.ListWorkerDeploymentsRequest;

                    /**
                     * Creates a ListWorkerDeploymentsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListWorkerDeploymentsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListWorkerDeploymentsRequest;

                    /**
                     * Creates a plain object from a ListWorkerDeploymentsRequest message. Also converts values to other types if specified.
                     * @param message ListWorkerDeploymentsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListWorkerDeploymentsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListWorkerDeploymentsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListWorkerDeploymentsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListWorkerDeploymentsResponse. */
                interface IListWorkerDeploymentsResponse {

                    /** ListWorkerDeploymentsResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);

                    /** The list of worker deployments. */
                    workerDeployments?: (temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.IWorkerDeploymentSummary[]|null);
                }

                /** Represents a ListWorkerDeploymentsResponse. */
                class ListWorkerDeploymentsResponse implements IListWorkerDeploymentsResponse {

                    /**
                     * Constructs a new ListWorkerDeploymentsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListWorkerDeploymentsResponse);

                    /** ListWorkerDeploymentsResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /** The list of worker deployments. */
                    public workerDeployments: temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.IWorkerDeploymentSummary[];

                    /**
                     * Creates a new ListWorkerDeploymentsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListWorkerDeploymentsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListWorkerDeploymentsResponse): temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse;

                    /**
                     * Encodes the specified ListWorkerDeploymentsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.verify|verify} messages.
                     * @param message ListWorkerDeploymentsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListWorkerDeploymentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListWorkerDeploymentsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.verify|verify} messages.
                     * @param message ListWorkerDeploymentsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListWorkerDeploymentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListWorkerDeploymentsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListWorkerDeploymentsResponse
                     * @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): temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse;

                    /**
                     * Decodes a ListWorkerDeploymentsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListWorkerDeploymentsResponse
                     * @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)): temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse;

                    /**
                     * Creates a ListWorkerDeploymentsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListWorkerDeploymentsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse;

                    /**
                     * Creates a plain object from a ListWorkerDeploymentsResponse message. Also converts values to other types if specified.
                     * @param message ListWorkerDeploymentsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListWorkerDeploymentsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListWorkerDeploymentsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ListWorkerDeploymentsResponse {

                    /** Properties of a WorkerDeploymentSummary. */
                    interface IWorkerDeploymentSummary {

                        /** WorkerDeploymentSummary name */
                        name?: (string|null);

                        /** WorkerDeploymentSummary createTime */
                        createTime?: (google.protobuf.ITimestamp|null);

                        /** WorkerDeploymentSummary routingConfig */
                        routingConfig?: (temporal.api.deployment.v1.IRoutingConfig|null);

                        /** Summary of the version that was added most recently in the Worker Deployment. */
                        latestVersionSummary?: (temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary|null);

                        /** Summary of the current version of the Worker Deployment. */
                        currentVersionSummary?: (temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary|null);

                        /** Summary of the ramping version of the Worker Deployment. */
                        rampingVersionSummary?: (temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary|null);
                    }

                    /**
                     * (-- api-linter: core::0123::resource-annotation=disabled --)
                     * A subset of WorkerDeploymentInfo
                     */
                    class WorkerDeploymentSummary implements IWorkerDeploymentSummary {

                        /**
                         * Constructs a new WorkerDeploymentSummary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.IWorkerDeploymentSummary);

                        /** WorkerDeploymentSummary name. */
                        public name: string;

                        /** WorkerDeploymentSummary createTime. */
                        public createTime?: (google.protobuf.ITimestamp|null);

                        /** WorkerDeploymentSummary routingConfig. */
                        public routingConfig?: (temporal.api.deployment.v1.IRoutingConfig|null);

                        /** Summary of the version that was added most recently in the Worker Deployment. */
                        public latestVersionSummary?: (temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary|null);

                        /** Summary of the current version of the Worker Deployment. */
                        public currentVersionSummary?: (temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary|null);

                        /** Summary of the ramping version of the Worker Deployment. */
                        public rampingVersionSummary?: (temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary|null);

                        /**
                         * Creates a new WorkerDeploymentSummary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WorkerDeploymentSummary instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.IWorkerDeploymentSummary): temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.WorkerDeploymentSummary;

                        /**
                         * Encodes the specified WorkerDeploymentSummary message. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.WorkerDeploymentSummary.verify|verify} messages.
                         * @param message WorkerDeploymentSummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.IWorkerDeploymentSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WorkerDeploymentSummary message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.WorkerDeploymentSummary.verify|verify} messages.
                         * @param message WorkerDeploymentSummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.IWorkerDeploymentSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WorkerDeploymentSummary message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WorkerDeploymentSummary
                         * @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): temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.WorkerDeploymentSummary;

                        /**
                         * Decodes a WorkerDeploymentSummary message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WorkerDeploymentSummary
                         * @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)): temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.WorkerDeploymentSummary;

                        /**
                         * Creates a WorkerDeploymentSummary message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WorkerDeploymentSummary
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.WorkerDeploymentSummary;

                        /**
                         * Creates a plain object from a WorkerDeploymentSummary message. Also converts values to other types if specified.
                         * @param message WorkerDeploymentSummary
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse.WorkerDeploymentSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WorkerDeploymentSummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WorkerDeploymentSummary
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a DeleteWorkerDeploymentVersionRequest. */
                interface IDeleteWorkerDeploymentVersionRequest {

                    /** DeleteWorkerDeploymentVersionRequest namespace */
                    namespace?: (string|null);

                    /** Deprecated. Use `deployment_version`. */
                    version?: (string|null);

                    /** Required. */
                    deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * Pass to force deletion even if the Version is draining. In this case the open pinned
                     * workflows will be stuck until manually moved to another version by UpdateWorkflowExecutionOptions.
                     */
                    skipDrainage?: (boolean|null);

                    /** Optional. The identity of the client who initiated this request. */
                    identity?: (string|null);
                }

                /**
                 * Used for manual deletion of Versions. User can delete a Version only when all the
                 * following conditions are met:
                 * - It is not the Current or Ramping Version of its Deployment.
                 * - It has no active pollers (none of the task queues in the Version have pollers)
                 * - It is not draining (see WorkerDeploymentVersionInfo.drainage_info). This condition
                 * can be skipped by passing `skip-drainage=true`.
                 */
                class DeleteWorkerDeploymentVersionRequest implements IDeleteWorkerDeploymentVersionRequest {

                    /**
                     * Constructs a new DeleteWorkerDeploymentVersionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentVersionRequest);

                    /** DeleteWorkerDeploymentVersionRequest namespace. */
                    public namespace: string;

                    /** Deprecated. Use `deployment_version`. */
                    public version: string;

                    /** Required. */
                    public deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * Pass to force deletion even if the Version is draining. In this case the open pinned
                     * workflows will be stuck until manually moved to another version by UpdateWorkflowExecutionOptions.
                     */
                    public skipDrainage: boolean;

                    /** Optional. The identity of the client who initiated this request. */
                    public identity: string;

                    /**
                     * Creates a new DeleteWorkerDeploymentVersionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteWorkerDeploymentVersionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentVersionRequest): temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionRequest;

                    /**
                     * Encodes the specified DeleteWorkerDeploymentVersionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionRequest.verify|verify} messages.
                     * @param message DeleteWorkerDeploymentVersionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentVersionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteWorkerDeploymentVersionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionRequest.verify|verify} messages.
                     * @param message DeleteWorkerDeploymentVersionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentVersionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteWorkerDeploymentVersionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteWorkerDeploymentVersionRequest
                     * @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): temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionRequest;

                    /**
                     * Decodes a DeleteWorkerDeploymentVersionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteWorkerDeploymentVersionRequest
                     * @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)): temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionRequest;

                    /**
                     * Creates a DeleteWorkerDeploymentVersionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteWorkerDeploymentVersionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionRequest;

                    /**
                     * Creates a plain object from a DeleteWorkerDeploymentVersionRequest message. Also converts values to other types if specified.
                     * @param message DeleteWorkerDeploymentVersionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteWorkerDeploymentVersionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteWorkerDeploymentVersionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteWorkerDeploymentVersionResponse. */
                interface IDeleteWorkerDeploymentVersionResponse {
                }

                /** Represents a DeleteWorkerDeploymentVersionResponse. */
                class DeleteWorkerDeploymentVersionResponse implements IDeleteWorkerDeploymentVersionResponse {

                    /**
                     * Constructs a new DeleteWorkerDeploymentVersionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentVersionResponse);

                    /**
                     * Creates a new DeleteWorkerDeploymentVersionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteWorkerDeploymentVersionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentVersionResponse): temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionResponse;

                    /**
                     * Encodes the specified DeleteWorkerDeploymentVersionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionResponse.verify|verify} messages.
                     * @param message DeleteWorkerDeploymentVersionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentVersionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteWorkerDeploymentVersionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionResponse.verify|verify} messages.
                     * @param message DeleteWorkerDeploymentVersionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentVersionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteWorkerDeploymentVersionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteWorkerDeploymentVersionResponse
                     * @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): temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionResponse;

                    /**
                     * Decodes a DeleteWorkerDeploymentVersionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteWorkerDeploymentVersionResponse
                     * @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)): temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionResponse;

                    /**
                     * Creates a DeleteWorkerDeploymentVersionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteWorkerDeploymentVersionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionResponse;

                    /**
                     * Creates a plain object from a DeleteWorkerDeploymentVersionResponse message. Also converts values to other types if specified.
                     * @param message DeleteWorkerDeploymentVersionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteWorkerDeploymentVersionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteWorkerDeploymentVersionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteWorkerDeploymentRequest. */
                interface IDeleteWorkerDeploymentRequest {

                    /** DeleteWorkerDeploymentRequest namespace */
                    namespace?: (string|null);

                    /** DeleteWorkerDeploymentRequest deploymentName */
                    deploymentName?: (string|null);

                    /** Optional. The identity of the client who initiated this request. */
                    identity?: (string|null);
                }

                /**
                 * Deletes records of (an old) Deployment. A deployment can only be deleted if
                 * it has no Version in it.
                 */
                class DeleteWorkerDeploymentRequest implements IDeleteWorkerDeploymentRequest {

                    /**
                     * Constructs a new DeleteWorkerDeploymentRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentRequest);

                    /** DeleteWorkerDeploymentRequest namespace. */
                    public namespace: string;

                    /** DeleteWorkerDeploymentRequest deploymentName. */
                    public deploymentName: string;

                    /** Optional. The identity of the client who initiated this request. */
                    public identity: string;

                    /**
                     * Creates a new DeleteWorkerDeploymentRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteWorkerDeploymentRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentRequest): temporal.api.workflowservice.v1.DeleteWorkerDeploymentRequest;

                    /**
                     * Encodes the specified DeleteWorkerDeploymentRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkerDeploymentRequest.verify|verify} messages.
                     * @param message DeleteWorkerDeploymentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteWorkerDeploymentRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkerDeploymentRequest.verify|verify} messages.
                     * @param message DeleteWorkerDeploymentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteWorkerDeploymentRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteWorkerDeploymentRequest
                     * @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): temporal.api.workflowservice.v1.DeleteWorkerDeploymentRequest;

                    /**
                     * Decodes a DeleteWorkerDeploymentRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteWorkerDeploymentRequest
                     * @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)): temporal.api.workflowservice.v1.DeleteWorkerDeploymentRequest;

                    /**
                     * Creates a DeleteWorkerDeploymentRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteWorkerDeploymentRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteWorkerDeploymentRequest;

                    /**
                     * Creates a plain object from a DeleteWorkerDeploymentRequest message. Also converts values to other types if specified.
                     * @param message DeleteWorkerDeploymentRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteWorkerDeploymentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteWorkerDeploymentRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteWorkerDeploymentRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteWorkerDeploymentResponse. */
                interface IDeleteWorkerDeploymentResponse {
                }

                /** Represents a DeleteWorkerDeploymentResponse. */
                class DeleteWorkerDeploymentResponse implements IDeleteWorkerDeploymentResponse {

                    /**
                     * Constructs a new DeleteWorkerDeploymentResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentResponse);

                    /**
                     * Creates a new DeleteWorkerDeploymentResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteWorkerDeploymentResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentResponse): temporal.api.workflowservice.v1.DeleteWorkerDeploymentResponse;

                    /**
                     * Encodes the specified DeleteWorkerDeploymentResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkerDeploymentResponse.verify|verify} messages.
                     * @param message DeleteWorkerDeploymentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteWorkerDeploymentResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkerDeploymentResponse.verify|verify} messages.
                     * @param message DeleteWorkerDeploymentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteWorkerDeploymentResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteWorkerDeploymentResponse
                     * @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): temporal.api.workflowservice.v1.DeleteWorkerDeploymentResponse;

                    /**
                     * Decodes a DeleteWorkerDeploymentResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteWorkerDeploymentResponse
                     * @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)): temporal.api.workflowservice.v1.DeleteWorkerDeploymentResponse;

                    /**
                     * Creates a DeleteWorkerDeploymentResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteWorkerDeploymentResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteWorkerDeploymentResponse;

                    /**
                     * Creates a plain object from a DeleteWorkerDeploymentResponse message. Also converts values to other types if specified.
                     * @param message DeleteWorkerDeploymentResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteWorkerDeploymentResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteWorkerDeploymentResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteWorkerDeploymentResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateWorkerDeploymentVersionMetadataRequest. */
                interface IUpdateWorkerDeploymentVersionMetadataRequest {

                    /** UpdateWorkerDeploymentVersionMetadataRequest namespace */
                    namespace?: (string|null);

                    /** Deprecated. Use `deployment_version`. */
                    version?: (string|null);

                    /** Required. */
                    deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** UpdateWorkerDeploymentVersionMetadataRequest upsertEntries */
                    upsertEntries?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

                    /** List of keys to remove from the metadata. */
                    removeEntries?: (string[]|null);

                    /** Optional. The identity of the client who initiated this request. */
                    identity?: (string|null);
                }

                /** Used to update the user-defined metadata of a Worker Deployment Version. */
                class UpdateWorkerDeploymentVersionMetadataRequest implements IUpdateWorkerDeploymentVersionMetadataRequest {

                    /**
                     * Constructs a new UpdateWorkerDeploymentVersionMetadataRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkerDeploymentVersionMetadataRequest);

                    /** UpdateWorkerDeploymentVersionMetadataRequest namespace. */
                    public namespace: string;

                    /** Deprecated. Use `deployment_version`. */
                    public version: string;

                    /** Required. */
                    public deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** UpdateWorkerDeploymentVersionMetadataRequest upsertEntries. */
                    public upsertEntries: { [k: string]: temporal.api.common.v1.IPayload };

                    /** List of keys to remove from the metadata. */
                    public removeEntries: string[];

                    /** Optional. The identity of the client who initiated this request. */
                    public identity: string;

                    /**
                     * Creates a new UpdateWorkerDeploymentVersionMetadataRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkerDeploymentVersionMetadataRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkerDeploymentVersionMetadataRequest): temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataRequest;

                    /**
                     * Encodes the specified UpdateWorkerDeploymentVersionMetadataRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataRequest.verify|verify} messages.
                     * @param message UpdateWorkerDeploymentVersionMetadataRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkerDeploymentVersionMetadataRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkerDeploymentVersionMetadataRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataRequest.verify|verify} messages.
                     * @param message UpdateWorkerDeploymentVersionMetadataRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkerDeploymentVersionMetadataRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkerDeploymentVersionMetadataRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkerDeploymentVersionMetadataRequest
                     * @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): temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataRequest;

                    /**
                     * Decodes an UpdateWorkerDeploymentVersionMetadataRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkerDeploymentVersionMetadataRequest
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataRequest;

                    /**
                     * Creates an UpdateWorkerDeploymentVersionMetadataRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkerDeploymentVersionMetadataRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataRequest;

                    /**
                     * Creates a plain object from an UpdateWorkerDeploymentVersionMetadataRequest message. Also converts values to other types if specified.
                     * @param message UpdateWorkerDeploymentVersionMetadataRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkerDeploymentVersionMetadataRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkerDeploymentVersionMetadataRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateWorkerDeploymentVersionMetadataResponse. */
                interface IUpdateWorkerDeploymentVersionMetadataResponse {

                    /** Full metadata after performing the update. */
                    metadata?: (temporal.api.deployment.v1.IVersionMetadata|null);
                }

                /** Represents an UpdateWorkerDeploymentVersionMetadataResponse. */
                class UpdateWorkerDeploymentVersionMetadataResponse implements IUpdateWorkerDeploymentVersionMetadataResponse {

                    /**
                     * Constructs a new UpdateWorkerDeploymentVersionMetadataResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkerDeploymentVersionMetadataResponse);

                    /** Full metadata after performing the update. */
                    public metadata?: (temporal.api.deployment.v1.IVersionMetadata|null);

                    /**
                     * Creates a new UpdateWorkerDeploymentVersionMetadataResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkerDeploymentVersionMetadataResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkerDeploymentVersionMetadataResponse): temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataResponse;

                    /**
                     * Encodes the specified UpdateWorkerDeploymentVersionMetadataResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataResponse.verify|verify} messages.
                     * @param message UpdateWorkerDeploymentVersionMetadataResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkerDeploymentVersionMetadataResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkerDeploymentVersionMetadataResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataResponse.verify|verify} messages.
                     * @param message UpdateWorkerDeploymentVersionMetadataResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkerDeploymentVersionMetadataResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkerDeploymentVersionMetadataResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkerDeploymentVersionMetadataResponse
                     * @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): temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataResponse;

                    /**
                     * Decodes an UpdateWorkerDeploymentVersionMetadataResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkerDeploymentVersionMetadataResponse
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataResponse;

                    /**
                     * Creates an UpdateWorkerDeploymentVersionMetadataResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkerDeploymentVersionMetadataResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataResponse;

                    /**
                     * Creates a plain object from an UpdateWorkerDeploymentVersionMetadataResponse message. Also converts values to other types if specified.
                     * @param message UpdateWorkerDeploymentVersionMetadataResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkerDeploymentVersionMetadataResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkerDeploymentVersionMetadataResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetWorkerDeploymentManagerRequest. */
                interface ISetWorkerDeploymentManagerRequest {

                    /** SetWorkerDeploymentManagerRequest namespace */
                    namespace?: (string|null);

                    /** SetWorkerDeploymentManagerRequest deploymentName */
                    deploymentName?: (string|null);

                    /**
                     * Arbitrary value for `manager_identity`.
                     * Empty will unset the field.
                     */
                    managerIdentity?: (string|null);

                    /** True will set `manager_identity` to `identity`. */
                    self?: (boolean|null);

                    /**
                     * Optional. This can be the value of conflict_token from a Describe, or another Worker
                     * Deployment API. Passing a non-nil conflict token will cause this request to fail if the
                     * Deployment's configuration has been modified between the API call that generated the
                     * token and this one.
                     */
                    conflictToken?: (Uint8Array|null);

                    /** Required. The identity of the client who initiated this request. */
                    identity?: (string|null);
                }

                /** Update the ManagerIdentity of a Worker Deployment. */
                class SetWorkerDeploymentManagerRequest implements ISetWorkerDeploymentManagerRequest {

                    /**
                     * Constructs a new SetWorkerDeploymentManagerRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentManagerRequest);

                    /** SetWorkerDeploymentManagerRequest namespace. */
                    public namespace: string;

                    /** SetWorkerDeploymentManagerRequest deploymentName. */
                    public deploymentName: string;

                    /**
                     * Arbitrary value for `manager_identity`.
                     * Empty will unset the field.
                     */
                    public managerIdentity?: (string|null);

                    /** True will set `manager_identity` to `identity`. */
                    public self?: (boolean|null);

                    /**
                     * Optional. This can be the value of conflict_token from a Describe, or another Worker
                     * Deployment API. Passing a non-nil conflict token will cause this request to fail if the
                     * Deployment's configuration has been modified between the API call that generated the
                     * token and this one.
                     */
                    public conflictToken: Uint8Array;

                    /** Required. The identity of the client who initiated this request. */
                    public identity: string;

                    /** SetWorkerDeploymentManagerRequest newManagerIdentity. */
                    public newManagerIdentity?: ("managerIdentity"|"self");

                    /**
                     * Creates a new SetWorkerDeploymentManagerRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetWorkerDeploymentManagerRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentManagerRequest): temporal.api.workflowservice.v1.SetWorkerDeploymentManagerRequest;

                    /**
                     * Encodes the specified SetWorkerDeploymentManagerRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentManagerRequest.verify|verify} messages.
                     * @param message SetWorkerDeploymentManagerRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentManagerRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetWorkerDeploymentManagerRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentManagerRequest.verify|verify} messages.
                     * @param message SetWorkerDeploymentManagerRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentManagerRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetWorkerDeploymentManagerRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetWorkerDeploymentManagerRequest
                     * @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): temporal.api.workflowservice.v1.SetWorkerDeploymentManagerRequest;

                    /**
                     * Decodes a SetWorkerDeploymentManagerRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetWorkerDeploymentManagerRequest
                     * @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)): temporal.api.workflowservice.v1.SetWorkerDeploymentManagerRequest;

                    /**
                     * Creates a SetWorkerDeploymentManagerRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetWorkerDeploymentManagerRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SetWorkerDeploymentManagerRequest;

                    /**
                     * Creates a plain object from a SetWorkerDeploymentManagerRequest message. Also converts values to other types if specified.
                     * @param message SetWorkerDeploymentManagerRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SetWorkerDeploymentManagerRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetWorkerDeploymentManagerRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetWorkerDeploymentManagerRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetWorkerDeploymentManagerResponse. */
                interface ISetWorkerDeploymentManagerResponse {

                    /**
                     * This value is returned so that it can be optionally passed to APIs
                     * that write to the Worker Deployment state to ensure that the state
                     * did not change between this API call and a future write.
                     */
                    conflictToken?: (Uint8Array|null);

                    /**
                     * What the `manager_identity` field was before this change.
                     * Deprecated in favor of idempotency of the API. Use `DescribeWorkerDeployment` to get the
                     * manager identity before calling this API. By passing the `conflict_token` got from the
                     * `DescribeWorkerDeployment` call to this API you can ensure there is no interfering changes
                     * between the two calls.
                     */
                    previousManagerIdentity?: (string|null);
                }

                /** Represents a SetWorkerDeploymentManagerResponse. */
                class SetWorkerDeploymentManagerResponse implements ISetWorkerDeploymentManagerResponse {

                    /**
                     * Constructs a new SetWorkerDeploymentManagerResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentManagerResponse);

                    /**
                     * This value is returned so that it can be optionally passed to APIs
                     * that write to the Worker Deployment state to ensure that the state
                     * did not change between this API call and a future write.
                     */
                    public conflictToken: Uint8Array;

                    /**
                     * What the `manager_identity` field was before this change.
                     * Deprecated in favor of idempotency of the API. Use `DescribeWorkerDeployment` to get the
                     * manager identity before calling this API. By passing the `conflict_token` got from the
                     * `DescribeWorkerDeployment` call to this API you can ensure there is no interfering changes
                     * between the two calls.
                     */
                    public previousManagerIdentity: string;

                    /**
                     * Creates a new SetWorkerDeploymentManagerResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetWorkerDeploymentManagerResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ISetWorkerDeploymentManagerResponse): temporal.api.workflowservice.v1.SetWorkerDeploymentManagerResponse;

                    /**
                     * Encodes the specified SetWorkerDeploymentManagerResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentManagerResponse.verify|verify} messages.
                     * @param message SetWorkerDeploymentManagerResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentManagerResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetWorkerDeploymentManagerResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.SetWorkerDeploymentManagerResponse.verify|verify} messages.
                     * @param message SetWorkerDeploymentManagerResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ISetWorkerDeploymentManagerResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetWorkerDeploymentManagerResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetWorkerDeploymentManagerResponse
                     * @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): temporal.api.workflowservice.v1.SetWorkerDeploymentManagerResponse;

                    /**
                     * Decodes a SetWorkerDeploymentManagerResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetWorkerDeploymentManagerResponse
                     * @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)): temporal.api.workflowservice.v1.SetWorkerDeploymentManagerResponse;

                    /**
                     * Creates a SetWorkerDeploymentManagerResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetWorkerDeploymentManagerResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.SetWorkerDeploymentManagerResponse;

                    /**
                     * Creates a plain object from a SetWorkerDeploymentManagerResponse message. Also converts values to other types if specified.
                     * @param message SetWorkerDeploymentManagerResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.SetWorkerDeploymentManagerResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetWorkerDeploymentManagerResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetWorkerDeploymentManagerResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetCurrentDeploymentRequest. */
                interface IGetCurrentDeploymentRequest {

                    /** GetCurrentDeploymentRequest namespace */
                    namespace?: (string|null);

                    /** GetCurrentDeploymentRequest seriesName */
                    seriesName?: (string|null);
                }

                /**
                 * Returns the Current Deployment of a deployment series.
                 * [cleanup-wv-pre-release] Pre-release deployment APIs, clean up later
                 */
                class GetCurrentDeploymentRequest implements IGetCurrentDeploymentRequest {

                    /**
                     * Constructs a new GetCurrentDeploymentRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetCurrentDeploymentRequest);

                    /** GetCurrentDeploymentRequest namespace. */
                    public namespace: string;

                    /** GetCurrentDeploymentRequest seriesName. */
                    public seriesName: string;

                    /**
                     * Creates a new GetCurrentDeploymentRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetCurrentDeploymentRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetCurrentDeploymentRequest): temporal.api.workflowservice.v1.GetCurrentDeploymentRequest;

                    /**
                     * Encodes the specified GetCurrentDeploymentRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.GetCurrentDeploymentRequest.verify|verify} messages.
                     * @param message GetCurrentDeploymentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetCurrentDeploymentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetCurrentDeploymentRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetCurrentDeploymentRequest.verify|verify} messages.
                     * @param message GetCurrentDeploymentRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetCurrentDeploymentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetCurrentDeploymentRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetCurrentDeploymentRequest
                     * @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): temporal.api.workflowservice.v1.GetCurrentDeploymentRequest;

                    /**
                     * Decodes a GetCurrentDeploymentRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetCurrentDeploymentRequest
                     * @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)): temporal.api.workflowservice.v1.GetCurrentDeploymentRequest;

                    /**
                     * Creates a GetCurrentDeploymentRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetCurrentDeploymentRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetCurrentDeploymentRequest;

                    /**
                     * Creates a plain object from a GetCurrentDeploymentRequest message. Also converts values to other types if specified.
                     * @param message GetCurrentDeploymentRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetCurrentDeploymentRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetCurrentDeploymentRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetCurrentDeploymentRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetCurrentDeploymentResponse. */
                interface IGetCurrentDeploymentResponse {

                    /** GetCurrentDeploymentResponse currentDeploymentInfo */
                    currentDeploymentInfo?: (temporal.api.deployment.v1.IDeploymentInfo|null);
                }

                /** [cleanup-wv-pre-release] Pre-release deployment APIs, clean up later */
                class GetCurrentDeploymentResponse implements IGetCurrentDeploymentResponse {

                    /**
                     * Constructs a new GetCurrentDeploymentResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetCurrentDeploymentResponse);

                    /** GetCurrentDeploymentResponse currentDeploymentInfo. */
                    public currentDeploymentInfo?: (temporal.api.deployment.v1.IDeploymentInfo|null);

                    /**
                     * Creates a new GetCurrentDeploymentResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetCurrentDeploymentResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetCurrentDeploymentResponse): temporal.api.workflowservice.v1.GetCurrentDeploymentResponse;

                    /**
                     * Encodes the specified GetCurrentDeploymentResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.GetCurrentDeploymentResponse.verify|verify} messages.
                     * @param message GetCurrentDeploymentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetCurrentDeploymentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetCurrentDeploymentResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetCurrentDeploymentResponse.verify|verify} messages.
                     * @param message GetCurrentDeploymentResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetCurrentDeploymentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetCurrentDeploymentResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetCurrentDeploymentResponse
                     * @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): temporal.api.workflowservice.v1.GetCurrentDeploymentResponse;

                    /**
                     * Decodes a GetCurrentDeploymentResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetCurrentDeploymentResponse
                     * @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)): temporal.api.workflowservice.v1.GetCurrentDeploymentResponse;

                    /**
                     * Creates a GetCurrentDeploymentResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetCurrentDeploymentResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetCurrentDeploymentResponse;

                    /**
                     * Creates a plain object from a GetCurrentDeploymentResponse message. Also converts values to other types if specified.
                     * @param message GetCurrentDeploymentResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetCurrentDeploymentResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetCurrentDeploymentResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetCurrentDeploymentResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetDeploymentReachabilityRequest. */
                interface IGetDeploymentReachabilityRequest {

                    /** GetDeploymentReachabilityRequest namespace */
                    namespace?: (string|null);

                    /** GetDeploymentReachabilityRequest deployment */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);
                }

                /** [cleanup-wv-pre-release] Pre-release deployment APIs, clean up later */
                class GetDeploymentReachabilityRequest implements IGetDeploymentReachabilityRequest {

                    /**
                     * Constructs a new GetDeploymentReachabilityRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetDeploymentReachabilityRequest);

                    /** GetDeploymentReachabilityRequest namespace. */
                    public namespace: string;

                    /** GetDeploymentReachabilityRequest deployment. */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /**
                     * Creates a new GetDeploymentReachabilityRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetDeploymentReachabilityRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetDeploymentReachabilityRequest): temporal.api.workflowservice.v1.GetDeploymentReachabilityRequest;

                    /**
                     * Encodes the specified GetDeploymentReachabilityRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.GetDeploymentReachabilityRequest.verify|verify} messages.
                     * @param message GetDeploymentReachabilityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetDeploymentReachabilityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetDeploymentReachabilityRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetDeploymentReachabilityRequest.verify|verify} messages.
                     * @param message GetDeploymentReachabilityRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetDeploymentReachabilityRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetDeploymentReachabilityRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetDeploymentReachabilityRequest
                     * @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): temporal.api.workflowservice.v1.GetDeploymentReachabilityRequest;

                    /**
                     * Decodes a GetDeploymentReachabilityRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetDeploymentReachabilityRequest
                     * @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)): temporal.api.workflowservice.v1.GetDeploymentReachabilityRequest;

                    /**
                     * Creates a GetDeploymentReachabilityRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetDeploymentReachabilityRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetDeploymentReachabilityRequest;

                    /**
                     * Creates a plain object from a GetDeploymentReachabilityRequest message. Also converts values to other types if specified.
                     * @param message GetDeploymentReachabilityRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetDeploymentReachabilityRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetDeploymentReachabilityRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetDeploymentReachabilityRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetDeploymentReachabilityResponse. */
                interface IGetDeploymentReachabilityResponse {

                    /** GetDeploymentReachabilityResponse deploymentInfo */
                    deploymentInfo?: (temporal.api.deployment.v1.IDeploymentInfo|null);

                    /** GetDeploymentReachabilityResponse reachability */
                    reachability?: (temporal.api.enums.v1.DeploymentReachability|null);

                    /**
                     * Reachability level might come from server cache. This timestamp specifies when the value
                     * was actually calculated.
                     */
                    lastUpdateTime?: (google.protobuf.ITimestamp|null);
                }

                /** [cleanup-wv-pre-release] Pre-release deployment APIs, clean up later */
                class GetDeploymentReachabilityResponse implements IGetDeploymentReachabilityResponse {

                    /**
                     * Constructs a new GetDeploymentReachabilityResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IGetDeploymentReachabilityResponse);

                    /** GetDeploymentReachabilityResponse deploymentInfo. */
                    public deploymentInfo?: (temporal.api.deployment.v1.IDeploymentInfo|null);

                    /** GetDeploymentReachabilityResponse reachability. */
                    public reachability: temporal.api.enums.v1.DeploymentReachability;

                    /**
                     * Reachability level might come from server cache. This timestamp specifies when the value
                     * was actually calculated.
                     */
                    public lastUpdateTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new GetDeploymentReachabilityResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetDeploymentReachabilityResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IGetDeploymentReachabilityResponse): temporal.api.workflowservice.v1.GetDeploymentReachabilityResponse;

                    /**
                     * Encodes the specified GetDeploymentReachabilityResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.GetDeploymentReachabilityResponse.verify|verify} messages.
                     * @param message GetDeploymentReachabilityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IGetDeploymentReachabilityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetDeploymentReachabilityResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.GetDeploymentReachabilityResponse.verify|verify} messages.
                     * @param message GetDeploymentReachabilityResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IGetDeploymentReachabilityResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetDeploymentReachabilityResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetDeploymentReachabilityResponse
                     * @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): temporal.api.workflowservice.v1.GetDeploymentReachabilityResponse;

                    /**
                     * Decodes a GetDeploymentReachabilityResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetDeploymentReachabilityResponse
                     * @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)): temporal.api.workflowservice.v1.GetDeploymentReachabilityResponse;

                    /**
                     * Creates a GetDeploymentReachabilityResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetDeploymentReachabilityResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.GetDeploymentReachabilityResponse;

                    /**
                     * Creates a plain object from a GetDeploymentReachabilityResponse message. Also converts values to other types if specified.
                     * @param message GetDeploymentReachabilityResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.GetDeploymentReachabilityResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetDeploymentReachabilityResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetDeploymentReachabilityResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateWorkflowRuleRequest. */
                interface ICreateWorkflowRuleRequest {

                    /** CreateWorkflowRuleRequest namespace */
                    namespace?: (string|null);

                    /** The rule specification . */
                    spec?: (temporal.api.rules.v1.IWorkflowRuleSpec|null);

                    /**
                     * If true, the rule will be applied to the currently running workflows via batch job.
                     * If not set , the rule will only be applied when triggering condition is satisfied.
                     * visibility_query in the rule will be used to select the workflows to apply the rule to.
                     */
                    forceScan?: (boolean|null);

                    /** Used to de-dupe requests. Typically should be UUID. */
                    requestId?: (string|null);

                    /** Identity of the actor who created the rule. Will be stored with the rule. */
                    identity?: (string|null);

                    /** Rule description.Will be stored with the rule. */
                    description?: (string|null);
                }

                /** Represents a CreateWorkflowRuleRequest. */
                class CreateWorkflowRuleRequest implements ICreateWorkflowRuleRequest {

                    /**
                     * Constructs a new CreateWorkflowRuleRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ICreateWorkflowRuleRequest);

                    /** CreateWorkflowRuleRequest namespace. */
                    public namespace: string;

                    /** The rule specification . */
                    public spec?: (temporal.api.rules.v1.IWorkflowRuleSpec|null);

                    /**
                     * If true, the rule will be applied to the currently running workflows via batch job.
                     * If not set , the rule will only be applied when triggering condition is satisfied.
                     * visibility_query in the rule will be used to select the workflows to apply the rule to.
                     */
                    public forceScan: boolean;

                    /** Used to de-dupe requests. Typically should be UUID. */
                    public requestId: string;

                    /** Identity of the actor who created the rule. Will be stored with the rule. */
                    public identity: string;

                    /** Rule description.Will be stored with the rule. */
                    public description: string;

                    /**
                     * Creates a new CreateWorkflowRuleRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateWorkflowRuleRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ICreateWorkflowRuleRequest): temporal.api.workflowservice.v1.CreateWorkflowRuleRequest;

                    /**
                     * Encodes the specified CreateWorkflowRuleRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.CreateWorkflowRuleRequest.verify|verify} messages.
                     * @param message CreateWorkflowRuleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ICreateWorkflowRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateWorkflowRuleRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CreateWorkflowRuleRequest.verify|verify} messages.
                     * @param message CreateWorkflowRuleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ICreateWorkflowRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateWorkflowRuleRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateWorkflowRuleRequest
                     * @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): temporal.api.workflowservice.v1.CreateWorkflowRuleRequest;

                    /**
                     * Decodes a CreateWorkflowRuleRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateWorkflowRuleRequest
                     * @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)): temporal.api.workflowservice.v1.CreateWorkflowRuleRequest;

                    /**
                     * Creates a CreateWorkflowRuleRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateWorkflowRuleRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CreateWorkflowRuleRequest;

                    /**
                     * Creates a plain object from a CreateWorkflowRuleRequest message. Also converts values to other types if specified.
                     * @param message CreateWorkflowRuleRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.CreateWorkflowRuleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateWorkflowRuleRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateWorkflowRuleRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateWorkflowRuleResponse. */
                interface ICreateWorkflowRuleResponse {

                    /** Created rule. */
                    rule?: (temporal.api.rules.v1.IWorkflowRule|null);

                    /** Batch Job ID if force-scan flag was provided. Otherwise empty. */
                    jobId?: (string|null);
                }

                /** Represents a CreateWorkflowRuleResponse. */
                class CreateWorkflowRuleResponse implements ICreateWorkflowRuleResponse {

                    /**
                     * Constructs a new CreateWorkflowRuleResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ICreateWorkflowRuleResponse);

                    /** Created rule. */
                    public rule?: (temporal.api.rules.v1.IWorkflowRule|null);

                    /** Batch Job ID if force-scan flag was provided. Otherwise empty. */
                    public jobId: string;

                    /**
                     * Creates a new CreateWorkflowRuleResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateWorkflowRuleResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ICreateWorkflowRuleResponse): temporal.api.workflowservice.v1.CreateWorkflowRuleResponse;

                    /**
                     * Encodes the specified CreateWorkflowRuleResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.CreateWorkflowRuleResponse.verify|verify} messages.
                     * @param message CreateWorkflowRuleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ICreateWorkflowRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateWorkflowRuleResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CreateWorkflowRuleResponse.verify|verify} messages.
                     * @param message CreateWorkflowRuleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ICreateWorkflowRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateWorkflowRuleResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateWorkflowRuleResponse
                     * @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): temporal.api.workflowservice.v1.CreateWorkflowRuleResponse;

                    /**
                     * Decodes a CreateWorkflowRuleResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateWorkflowRuleResponse
                     * @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)): temporal.api.workflowservice.v1.CreateWorkflowRuleResponse;

                    /**
                     * Creates a CreateWorkflowRuleResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateWorkflowRuleResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CreateWorkflowRuleResponse;

                    /**
                     * Creates a plain object from a CreateWorkflowRuleResponse message. Also converts values to other types if specified.
                     * @param message CreateWorkflowRuleResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.CreateWorkflowRuleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateWorkflowRuleResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateWorkflowRuleResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeWorkflowRuleRequest. */
                interface IDescribeWorkflowRuleRequest {

                    /** DescribeWorkflowRuleRequest namespace */
                    namespace?: (string|null);

                    /** User-specified ID of the rule to read. Unique within the namespace. */
                    ruleId?: (string|null);
                }

                /** Represents a DescribeWorkflowRuleRequest. */
                class DescribeWorkflowRuleRequest implements IDescribeWorkflowRuleRequest {

                    /**
                     * Constructs a new DescribeWorkflowRuleRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeWorkflowRuleRequest);

                    /** DescribeWorkflowRuleRequest namespace. */
                    public namespace: string;

                    /** User-specified ID of the rule to read. Unique within the namespace. */
                    public ruleId: string;

                    /**
                     * Creates a new DescribeWorkflowRuleRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeWorkflowRuleRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeWorkflowRuleRequest): temporal.api.workflowservice.v1.DescribeWorkflowRuleRequest;

                    /**
                     * Encodes the specified DescribeWorkflowRuleRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkflowRuleRequest.verify|verify} messages.
                     * @param message DescribeWorkflowRuleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeWorkflowRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeWorkflowRuleRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkflowRuleRequest.verify|verify} messages.
                     * @param message DescribeWorkflowRuleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeWorkflowRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeWorkflowRuleRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeWorkflowRuleRequest
                     * @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): temporal.api.workflowservice.v1.DescribeWorkflowRuleRequest;

                    /**
                     * Decodes a DescribeWorkflowRuleRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeWorkflowRuleRequest
                     * @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)): temporal.api.workflowservice.v1.DescribeWorkflowRuleRequest;

                    /**
                     * Creates a DescribeWorkflowRuleRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeWorkflowRuleRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeWorkflowRuleRequest;

                    /**
                     * Creates a plain object from a DescribeWorkflowRuleRequest message. Also converts values to other types if specified.
                     * @param message DescribeWorkflowRuleRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeWorkflowRuleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeWorkflowRuleRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeWorkflowRuleRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeWorkflowRuleResponse. */
                interface IDescribeWorkflowRuleResponse {

                    /** The rule that was read. */
                    rule?: (temporal.api.rules.v1.IWorkflowRule|null);
                }

                /** Represents a DescribeWorkflowRuleResponse. */
                class DescribeWorkflowRuleResponse implements IDescribeWorkflowRuleResponse {

                    /**
                     * Constructs a new DescribeWorkflowRuleResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeWorkflowRuleResponse);

                    /** The rule that was read. */
                    public rule?: (temporal.api.rules.v1.IWorkflowRule|null);

                    /**
                     * Creates a new DescribeWorkflowRuleResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeWorkflowRuleResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeWorkflowRuleResponse): temporal.api.workflowservice.v1.DescribeWorkflowRuleResponse;

                    /**
                     * Encodes the specified DescribeWorkflowRuleResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkflowRuleResponse.verify|verify} messages.
                     * @param message DescribeWorkflowRuleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeWorkflowRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeWorkflowRuleResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkflowRuleResponse.verify|verify} messages.
                     * @param message DescribeWorkflowRuleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeWorkflowRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeWorkflowRuleResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeWorkflowRuleResponse
                     * @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): temporal.api.workflowservice.v1.DescribeWorkflowRuleResponse;

                    /**
                     * Decodes a DescribeWorkflowRuleResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeWorkflowRuleResponse
                     * @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)): temporal.api.workflowservice.v1.DescribeWorkflowRuleResponse;

                    /**
                     * Creates a DescribeWorkflowRuleResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeWorkflowRuleResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeWorkflowRuleResponse;

                    /**
                     * Creates a plain object from a DescribeWorkflowRuleResponse message. Also converts values to other types if specified.
                     * @param message DescribeWorkflowRuleResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeWorkflowRuleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeWorkflowRuleResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeWorkflowRuleResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteWorkflowRuleRequest. */
                interface IDeleteWorkflowRuleRequest {

                    /** DeleteWorkflowRuleRequest namespace */
                    namespace?: (string|null);

                    /** ID of the rule to delete. Unique within the namespace. */
                    ruleId?: (string|null);
                }

                /** Represents a DeleteWorkflowRuleRequest. */
                class DeleteWorkflowRuleRequest implements IDeleteWorkflowRuleRequest {

                    /**
                     * Constructs a new DeleteWorkflowRuleRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteWorkflowRuleRequest);

                    /** DeleteWorkflowRuleRequest namespace. */
                    public namespace: string;

                    /** ID of the rule to delete. Unique within the namespace. */
                    public ruleId: string;

                    /**
                     * Creates a new DeleteWorkflowRuleRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteWorkflowRuleRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteWorkflowRuleRequest): temporal.api.workflowservice.v1.DeleteWorkflowRuleRequest;

                    /**
                     * Encodes the specified DeleteWorkflowRuleRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkflowRuleRequest.verify|verify} messages.
                     * @param message DeleteWorkflowRuleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteWorkflowRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteWorkflowRuleRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkflowRuleRequest.verify|verify} messages.
                     * @param message DeleteWorkflowRuleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteWorkflowRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteWorkflowRuleRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteWorkflowRuleRequest
                     * @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): temporal.api.workflowservice.v1.DeleteWorkflowRuleRequest;

                    /**
                     * Decodes a DeleteWorkflowRuleRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteWorkflowRuleRequest
                     * @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)): temporal.api.workflowservice.v1.DeleteWorkflowRuleRequest;

                    /**
                     * Creates a DeleteWorkflowRuleRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteWorkflowRuleRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteWorkflowRuleRequest;

                    /**
                     * Creates a plain object from a DeleteWorkflowRuleRequest message. Also converts values to other types if specified.
                     * @param message DeleteWorkflowRuleRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteWorkflowRuleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteWorkflowRuleRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteWorkflowRuleRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteWorkflowRuleResponse. */
                interface IDeleteWorkflowRuleResponse {
                }

                /** Represents a DeleteWorkflowRuleResponse. */
                class DeleteWorkflowRuleResponse implements IDeleteWorkflowRuleResponse {

                    /**
                     * Constructs a new DeleteWorkflowRuleResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteWorkflowRuleResponse);

                    /**
                     * Creates a new DeleteWorkflowRuleResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteWorkflowRuleResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteWorkflowRuleResponse): temporal.api.workflowservice.v1.DeleteWorkflowRuleResponse;

                    /**
                     * Encodes the specified DeleteWorkflowRuleResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkflowRuleResponse.verify|verify} messages.
                     * @param message DeleteWorkflowRuleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteWorkflowRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteWorkflowRuleResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteWorkflowRuleResponse.verify|verify} messages.
                     * @param message DeleteWorkflowRuleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteWorkflowRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteWorkflowRuleResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteWorkflowRuleResponse
                     * @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): temporal.api.workflowservice.v1.DeleteWorkflowRuleResponse;

                    /**
                     * Decodes a DeleteWorkflowRuleResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteWorkflowRuleResponse
                     * @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)): temporal.api.workflowservice.v1.DeleteWorkflowRuleResponse;

                    /**
                     * Creates a DeleteWorkflowRuleResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteWorkflowRuleResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteWorkflowRuleResponse;

                    /**
                     * Creates a plain object from a DeleteWorkflowRuleResponse message. Also converts values to other types if specified.
                     * @param message DeleteWorkflowRuleResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteWorkflowRuleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteWorkflowRuleResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteWorkflowRuleResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListWorkflowRulesRequest. */
                interface IListWorkflowRulesRequest {

                    /** ListWorkflowRulesRequest namespace */
                    namespace?: (string|null);

                    /** ListWorkflowRulesRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListWorkflowRulesRequest. */
                class ListWorkflowRulesRequest implements IListWorkflowRulesRequest {

                    /**
                     * Constructs a new ListWorkflowRulesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListWorkflowRulesRequest);

                    /** ListWorkflowRulesRequest namespace. */
                    public namespace: string;

                    /** ListWorkflowRulesRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListWorkflowRulesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListWorkflowRulesRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListWorkflowRulesRequest): temporal.api.workflowservice.v1.ListWorkflowRulesRequest;

                    /**
                     * Encodes the specified ListWorkflowRulesRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkflowRulesRequest.verify|verify} messages.
                     * @param message ListWorkflowRulesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListWorkflowRulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListWorkflowRulesRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkflowRulesRequest.verify|verify} messages.
                     * @param message ListWorkflowRulesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListWorkflowRulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListWorkflowRulesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListWorkflowRulesRequest
                     * @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): temporal.api.workflowservice.v1.ListWorkflowRulesRequest;

                    /**
                     * Decodes a ListWorkflowRulesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListWorkflowRulesRequest
                     * @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)): temporal.api.workflowservice.v1.ListWorkflowRulesRequest;

                    /**
                     * Creates a ListWorkflowRulesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListWorkflowRulesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListWorkflowRulesRequest;

                    /**
                     * Creates a plain object from a ListWorkflowRulesRequest message. Also converts values to other types if specified.
                     * @param message ListWorkflowRulesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListWorkflowRulesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListWorkflowRulesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListWorkflowRulesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListWorkflowRulesResponse. */
                interface IListWorkflowRulesResponse {

                    /** ListWorkflowRulesResponse rules */
                    rules?: (temporal.api.rules.v1.IWorkflowRule[]|null);

                    /** ListWorkflowRulesResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListWorkflowRulesResponse. */
                class ListWorkflowRulesResponse implements IListWorkflowRulesResponse {

                    /**
                     * Constructs a new ListWorkflowRulesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListWorkflowRulesResponse);

                    /** ListWorkflowRulesResponse rules. */
                    public rules: temporal.api.rules.v1.IWorkflowRule[];

                    /** ListWorkflowRulesResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListWorkflowRulesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListWorkflowRulesResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListWorkflowRulesResponse): temporal.api.workflowservice.v1.ListWorkflowRulesResponse;

                    /**
                     * Encodes the specified ListWorkflowRulesResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkflowRulesResponse.verify|verify} messages.
                     * @param message ListWorkflowRulesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListWorkflowRulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListWorkflowRulesResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkflowRulesResponse.verify|verify} messages.
                     * @param message ListWorkflowRulesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListWorkflowRulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListWorkflowRulesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListWorkflowRulesResponse
                     * @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): temporal.api.workflowservice.v1.ListWorkflowRulesResponse;

                    /**
                     * Decodes a ListWorkflowRulesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListWorkflowRulesResponse
                     * @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)): temporal.api.workflowservice.v1.ListWorkflowRulesResponse;

                    /**
                     * Creates a ListWorkflowRulesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListWorkflowRulesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListWorkflowRulesResponse;

                    /**
                     * Creates a plain object from a ListWorkflowRulesResponse message. Also converts values to other types if specified.
                     * @param message ListWorkflowRulesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListWorkflowRulesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListWorkflowRulesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListWorkflowRulesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TriggerWorkflowRuleRequest. */
                interface ITriggerWorkflowRuleRequest {

                    /** TriggerWorkflowRuleRequest namespace */
                    namespace?: (string|null);

                    /** Execution info of the workflow which scheduled this activity */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** TriggerWorkflowRuleRequest id */
                    id?: (string|null);

                    /** Note: Rule ID and expiration date are not used in the trigger request. */
                    spec?: (temporal.api.rules.v1.IWorkflowRuleSpec|null);

                    /** The identity of the client who initiated this request */
                    identity?: (string|null);
                }

                /** Represents a TriggerWorkflowRuleRequest. */
                class TriggerWorkflowRuleRequest implements ITriggerWorkflowRuleRequest {

                    /**
                     * Constructs a new TriggerWorkflowRuleRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ITriggerWorkflowRuleRequest);

                    /** TriggerWorkflowRuleRequest namespace. */
                    public namespace: string;

                    /** Execution info of the workflow which scheduled this activity */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** TriggerWorkflowRuleRequest id. */
                    public id?: (string|null);

                    /** Note: Rule ID and expiration date are not used in the trigger request. */
                    public spec?: (temporal.api.rules.v1.IWorkflowRuleSpec|null);

                    /** The identity of the client who initiated this request */
                    public identity: string;

                    /** Either provide id of existing rule, or rule specification */
                    public rule?: ("id"|"spec");

                    /**
                     * Creates a new TriggerWorkflowRuleRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TriggerWorkflowRuleRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ITriggerWorkflowRuleRequest): temporal.api.workflowservice.v1.TriggerWorkflowRuleRequest;

                    /**
                     * Encodes the specified TriggerWorkflowRuleRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.TriggerWorkflowRuleRequest.verify|verify} messages.
                     * @param message TriggerWorkflowRuleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ITriggerWorkflowRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TriggerWorkflowRuleRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.TriggerWorkflowRuleRequest.verify|verify} messages.
                     * @param message TriggerWorkflowRuleRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ITriggerWorkflowRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TriggerWorkflowRuleRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TriggerWorkflowRuleRequest
                     * @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): temporal.api.workflowservice.v1.TriggerWorkflowRuleRequest;

                    /**
                     * Decodes a TriggerWorkflowRuleRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TriggerWorkflowRuleRequest
                     * @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)): temporal.api.workflowservice.v1.TriggerWorkflowRuleRequest;

                    /**
                     * Creates a TriggerWorkflowRuleRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TriggerWorkflowRuleRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.TriggerWorkflowRuleRequest;

                    /**
                     * Creates a plain object from a TriggerWorkflowRuleRequest message. Also converts values to other types if specified.
                     * @param message TriggerWorkflowRuleRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.TriggerWorkflowRuleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TriggerWorkflowRuleRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TriggerWorkflowRuleRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TriggerWorkflowRuleResponse. */
                interface ITriggerWorkflowRuleResponse {

                    /** True is the rule was applied, based on the rule conditions (predicate/visibility_query). */
                    applied?: (boolean|null);
                }

                /** Represents a TriggerWorkflowRuleResponse. */
                class TriggerWorkflowRuleResponse implements ITriggerWorkflowRuleResponse {

                    /**
                     * Constructs a new TriggerWorkflowRuleResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ITriggerWorkflowRuleResponse);

                    /** True is the rule was applied, based on the rule conditions (predicate/visibility_query). */
                    public applied: boolean;

                    /**
                     * Creates a new TriggerWorkflowRuleResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TriggerWorkflowRuleResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ITriggerWorkflowRuleResponse): temporal.api.workflowservice.v1.TriggerWorkflowRuleResponse;

                    /**
                     * Encodes the specified TriggerWorkflowRuleResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.TriggerWorkflowRuleResponse.verify|verify} messages.
                     * @param message TriggerWorkflowRuleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ITriggerWorkflowRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TriggerWorkflowRuleResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.TriggerWorkflowRuleResponse.verify|verify} messages.
                     * @param message TriggerWorkflowRuleResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ITriggerWorkflowRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TriggerWorkflowRuleResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TriggerWorkflowRuleResponse
                     * @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): temporal.api.workflowservice.v1.TriggerWorkflowRuleResponse;

                    /**
                     * Decodes a TriggerWorkflowRuleResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TriggerWorkflowRuleResponse
                     * @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)): temporal.api.workflowservice.v1.TriggerWorkflowRuleResponse;

                    /**
                     * Creates a TriggerWorkflowRuleResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TriggerWorkflowRuleResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.TriggerWorkflowRuleResponse;

                    /**
                     * Creates a plain object from a TriggerWorkflowRuleResponse message. Also converts values to other types if specified.
                     * @param message TriggerWorkflowRuleResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.TriggerWorkflowRuleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TriggerWorkflowRuleResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TriggerWorkflowRuleResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RecordWorkerHeartbeatRequest. */
                interface IRecordWorkerHeartbeatRequest {

                    /** Namespace this worker belongs to. */
                    namespace?: (string|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** RecordWorkerHeartbeatRequest workerHeartbeat */
                    workerHeartbeat?: (temporal.api.worker.v1.IWorkerHeartbeat[]|null);
                }

                /** Represents a RecordWorkerHeartbeatRequest. */
                class RecordWorkerHeartbeatRequest implements IRecordWorkerHeartbeatRequest {

                    /**
                     * Constructs a new RecordWorkerHeartbeatRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRecordWorkerHeartbeatRequest);

                    /** Namespace this worker belongs to. */
                    public namespace: string;

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** RecordWorkerHeartbeatRequest workerHeartbeat. */
                    public workerHeartbeat: temporal.api.worker.v1.IWorkerHeartbeat[];

                    /**
                     * Creates a new RecordWorkerHeartbeatRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RecordWorkerHeartbeatRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRecordWorkerHeartbeatRequest): temporal.api.workflowservice.v1.RecordWorkerHeartbeatRequest;

                    /**
                     * Encodes the specified RecordWorkerHeartbeatRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RecordWorkerHeartbeatRequest.verify|verify} messages.
                     * @param message RecordWorkerHeartbeatRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRecordWorkerHeartbeatRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RecordWorkerHeartbeatRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RecordWorkerHeartbeatRequest.verify|verify} messages.
                     * @param message RecordWorkerHeartbeatRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRecordWorkerHeartbeatRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RecordWorkerHeartbeatRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RecordWorkerHeartbeatRequest
                     * @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): temporal.api.workflowservice.v1.RecordWorkerHeartbeatRequest;

                    /**
                     * Decodes a RecordWorkerHeartbeatRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RecordWorkerHeartbeatRequest
                     * @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)): temporal.api.workflowservice.v1.RecordWorkerHeartbeatRequest;

                    /**
                     * Creates a RecordWorkerHeartbeatRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RecordWorkerHeartbeatRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RecordWorkerHeartbeatRequest;

                    /**
                     * Creates a plain object from a RecordWorkerHeartbeatRequest message. Also converts values to other types if specified.
                     * @param message RecordWorkerHeartbeatRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RecordWorkerHeartbeatRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RecordWorkerHeartbeatRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RecordWorkerHeartbeatRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RecordWorkerHeartbeatResponse. */
                interface IRecordWorkerHeartbeatResponse {
                }

                /** Represents a RecordWorkerHeartbeatResponse. */
                class RecordWorkerHeartbeatResponse implements IRecordWorkerHeartbeatResponse {

                    /**
                     * Constructs a new RecordWorkerHeartbeatResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRecordWorkerHeartbeatResponse);

                    /**
                     * Creates a new RecordWorkerHeartbeatResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RecordWorkerHeartbeatResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRecordWorkerHeartbeatResponse): temporal.api.workflowservice.v1.RecordWorkerHeartbeatResponse;

                    /**
                     * Encodes the specified RecordWorkerHeartbeatResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RecordWorkerHeartbeatResponse.verify|verify} messages.
                     * @param message RecordWorkerHeartbeatResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRecordWorkerHeartbeatResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RecordWorkerHeartbeatResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RecordWorkerHeartbeatResponse.verify|verify} messages.
                     * @param message RecordWorkerHeartbeatResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRecordWorkerHeartbeatResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RecordWorkerHeartbeatResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RecordWorkerHeartbeatResponse
                     * @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): temporal.api.workflowservice.v1.RecordWorkerHeartbeatResponse;

                    /**
                     * Decodes a RecordWorkerHeartbeatResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RecordWorkerHeartbeatResponse
                     * @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)): temporal.api.workflowservice.v1.RecordWorkerHeartbeatResponse;

                    /**
                     * Creates a RecordWorkerHeartbeatResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RecordWorkerHeartbeatResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RecordWorkerHeartbeatResponse;

                    /**
                     * Creates a plain object from a RecordWorkerHeartbeatResponse message. Also converts values to other types if specified.
                     * @param message RecordWorkerHeartbeatResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RecordWorkerHeartbeatResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RecordWorkerHeartbeatResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RecordWorkerHeartbeatResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListWorkersRequest. */
                interface IListWorkersRequest {

                    /** ListWorkersRequest namespace */
                    namespace?: (string|null);

                    /** ListWorkersRequest pageSize */
                    pageSize?: (number|null);

                    /** ListWorkersRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);

                    /**
                     * `query` in ListWorkers is used to filter workers based on worker status info.
                     * The following worker status attributes are expected are supported as part of the query:
                     * WorkerInstanceKey
                     * WorkerIdentity
                     * HostName
                     * TaskQueue
                     * DeploymentName
                     * BuildId
                     * SdkName
                     * SdkVersion
                     * StartTime
                     * LastHeartbeatTime
                     * Status
                     * Currently metrics are not supported as a part of ListWorkers query.
                     */
                    query?: (string|null);
                }

                /** Represents a ListWorkersRequest. */
                class ListWorkersRequest implements IListWorkersRequest {

                    /**
                     * Constructs a new ListWorkersRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListWorkersRequest);

                    /** ListWorkersRequest namespace. */
                    public namespace: string;

                    /** ListWorkersRequest pageSize. */
                    public pageSize: number;

                    /** ListWorkersRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * `query` in ListWorkers is used to filter workers based on worker status info.
                     * The following worker status attributes are expected are supported as part of the query:
                     * * WorkerInstanceKey
                     * * WorkerIdentity
                     * * HostName
                     * * TaskQueue
                     * * DeploymentName
                     * * BuildId
                     * * SdkName
                     * * SdkVersion
                     * * StartTime
                     * * LastHeartbeatTime
                     * * Status
                     * Currently metrics are not supported as a part of ListWorkers query.
                     */
                    public query: string;

                    /**
                     * Creates a new ListWorkersRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListWorkersRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListWorkersRequest): temporal.api.workflowservice.v1.ListWorkersRequest;

                    /**
                     * Encodes the specified ListWorkersRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkersRequest.verify|verify} messages.
                     * @param message ListWorkersRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListWorkersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListWorkersRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkersRequest.verify|verify} messages.
                     * @param message ListWorkersRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListWorkersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListWorkersRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListWorkersRequest
                     * @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): temporal.api.workflowservice.v1.ListWorkersRequest;

                    /**
                     * Decodes a ListWorkersRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListWorkersRequest
                     * @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)): temporal.api.workflowservice.v1.ListWorkersRequest;

                    /**
                     * Creates a ListWorkersRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListWorkersRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListWorkersRequest;

                    /**
                     * Creates a plain object from a ListWorkersRequest message. Also converts values to other types if specified.
                     * @param message ListWorkersRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListWorkersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListWorkersRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListWorkersRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListWorkersResponse. */
                interface IListWorkersResponse {

                    /** ListWorkersResponse workersInfo */
                    workersInfo?: (temporal.api.worker.v1.IWorkerInfo[]|null);

                    /** Next page token */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListWorkersResponse. */
                class ListWorkersResponse implements IListWorkersResponse {

                    /**
                     * Constructs a new ListWorkersResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListWorkersResponse);

                    /** ListWorkersResponse workersInfo. */
                    public workersInfo: temporal.api.worker.v1.IWorkerInfo[];

                    /** Next page token */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListWorkersResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListWorkersResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListWorkersResponse): temporal.api.workflowservice.v1.ListWorkersResponse;

                    /**
                     * Encodes the specified ListWorkersResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkersResponse.verify|verify} messages.
                     * @param message ListWorkersResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListWorkersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListWorkersResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListWorkersResponse.verify|verify} messages.
                     * @param message ListWorkersResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListWorkersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListWorkersResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListWorkersResponse
                     * @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): temporal.api.workflowservice.v1.ListWorkersResponse;

                    /**
                     * Decodes a ListWorkersResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListWorkersResponse
                     * @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)): temporal.api.workflowservice.v1.ListWorkersResponse;

                    /**
                     * Creates a ListWorkersResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListWorkersResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListWorkersResponse;

                    /**
                     * Creates a plain object from a ListWorkersResponse message. Also converts values to other types if specified.
                     * @param message ListWorkersResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListWorkersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListWorkersResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListWorkersResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateTaskQueueConfigRequest. */
                interface IUpdateTaskQueueConfigRequest {

                    /** UpdateTaskQueueConfigRequest namespace */
                    namespace?: (string|null);

                    /** UpdateTaskQueueConfigRequest identity */
                    identity?: (string|null);

                    /** Selects the task queue to update. */
                    taskQueue?: (string|null);

                    /** UpdateTaskQueueConfigRequest taskQueueType */
                    taskQueueType?: (temporal.api.enums.v1.TaskQueueType|null);

                    /**
                     * Update to queue-wide rate limit.
                     * If not set, this configuration is unchanged.
                     * NOTE: A limit set by the worker is overriden; and restored again when reset.
                     * If the `rate_limit` field in the `RateLimitUpdate` is missing, remove the existing rate limit.
                     */
                    updateQueueRateLimit?: (temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.IRateLimitUpdate|null);

                    /**
                     * Update to the default fairness key rate limit.
                     * If not set, this configuration is unchanged.
                     * If the `rate_limit` field in the `RateLimitUpdate` is missing, remove the existing rate limit.
                     */
                    updateFairnessKeyRateLimitDefault?: (temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.IRateLimitUpdate|null);

                    /**
                     * If set, overrides the fairness weight for each specified fairness key.
                     * Fairness keys not listed in this map will keep their existing overrides (if any).
                     */
                    setFairnessWeightOverrides?: ({ [k: string]: number }|null);

                    /**
                     * If set, removes any existing fairness weight overrides for each specified fairness key.
                     * Fairness weights for corresponding keys fall back to the values set during task creation (if any),
                     * or to the default weight of 1.0.
                     */
                    unsetFairnessWeightOverrides?: (string[]|null);
                }

                /** Represents an UpdateTaskQueueConfigRequest. */
                class UpdateTaskQueueConfigRequest implements IUpdateTaskQueueConfigRequest {

                    /**
                     * Constructs a new UpdateTaskQueueConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateTaskQueueConfigRequest);

                    /** UpdateTaskQueueConfigRequest namespace. */
                    public namespace: string;

                    /** UpdateTaskQueueConfigRequest identity. */
                    public identity: string;

                    /** Selects the task queue to update. */
                    public taskQueue: string;

                    /** UpdateTaskQueueConfigRequest taskQueueType. */
                    public taskQueueType: temporal.api.enums.v1.TaskQueueType;

                    /**
                     * Update to queue-wide rate limit.
                     * If not set, this configuration is unchanged.
                     * NOTE: A limit set by the worker is overriden; and restored again when reset.
                     * If the `rate_limit` field in the `RateLimitUpdate` is missing, remove the existing rate limit.
                     */
                    public updateQueueRateLimit?: (temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.IRateLimitUpdate|null);

                    /**
                     * Update to the default fairness key rate limit.
                     * If not set, this configuration is unchanged.
                     * If the `rate_limit` field in the `RateLimitUpdate` is missing, remove the existing rate limit.
                     */
                    public updateFairnessKeyRateLimitDefault?: (temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.IRateLimitUpdate|null);

                    /**
                     * If set, overrides the fairness weight for each specified fairness key.
                     * Fairness keys not listed in this map will keep their existing overrides (if any).
                     */
                    public setFairnessWeightOverrides: { [k: string]: number };

                    /**
                     * If set, removes any existing fairness weight overrides for each specified fairness key.
                     * Fairness weights for corresponding keys fall back to the values set during task creation (if any),
                     * or to the default weight of 1.0.
                     */
                    public unsetFairnessWeightOverrides: string[];

                    /**
                     * Creates a new UpdateTaskQueueConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateTaskQueueConfigRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateTaskQueueConfigRequest): temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest;

                    /**
                     * Encodes the specified UpdateTaskQueueConfigRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.verify|verify} messages.
                     * @param message UpdateTaskQueueConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateTaskQueueConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateTaskQueueConfigRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.verify|verify} messages.
                     * @param message UpdateTaskQueueConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateTaskQueueConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateTaskQueueConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateTaskQueueConfigRequest
                     * @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): temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest;

                    /**
                     * Decodes an UpdateTaskQueueConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateTaskQueueConfigRequest
                     * @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)): temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest;

                    /**
                     * Creates an UpdateTaskQueueConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateTaskQueueConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest;

                    /**
                     * Creates a plain object from an UpdateTaskQueueConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateTaskQueueConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateTaskQueueConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateTaskQueueConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace UpdateTaskQueueConfigRequest {

                    /** Properties of a RateLimitUpdate. */
                    interface IRateLimitUpdate {

                        /** Rate Limit to be updated */
                        rateLimit?: (temporal.api.taskqueue.v1.IRateLimit|null);

                        /** Reason for why the rate limit was set. */
                        reason?: (string|null);
                    }

                    /** Represents a RateLimitUpdate. */
                    class RateLimitUpdate implements IRateLimitUpdate {

                        /**
                         * Constructs a new RateLimitUpdate.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.IRateLimitUpdate);

                        /** Rate Limit to be updated */
                        public rateLimit?: (temporal.api.taskqueue.v1.IRateLimit|null);

                        /** Reason for why the rate limit was set. */
                        public reason: string;

                        /**
                         * Creates a new RateLimitUpdate instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RateLimitUpdate instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.IRateLimitUpdate): temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.RateLimitUpdate;

                        /**
                         * Encodes the specified RateLimitUpdate message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.RateLimitUpdate.verify|verify} messages.
                         * @param message RateLimitUpdate message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.IRateLimitUpdate, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RateLimitUpdate message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.RateLimitUpdate.verify|verify} messages.
                         * @param message RateLimitUpdate message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.IRateLimitUpdate, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RateLimitUpdate message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RateLimitUpdate
                         * @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): temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.RateLimitUpdate;

                        /**
                         * Decodes a RateLimitUpdate message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RateLimitUpdate
                         * @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)): temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.RateLimitUpdate;

                        /**
                         * Creates a RateLimitUpdate message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RateLimitUpdate
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.RateLimitUpdate;

                        /**
                         * Creates a plain object from a RateLimitUpdate message. Also converts values to other types if specified.
                         * @param message RateLimitUpdate
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest.RateLimitUpdate, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RateLimitUpdate to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RateLimitUpdate
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an UpdateTaskQueueConfigResponse. */
                interface IUpdateTaskQueueConfigResponse {

                    /** UpdateTaskQueueConfigResponse config */
                    config?: (temporal.api.taskqueue.v1.ITaskQueueConfig|null);
                }

                /** Represents an UpdateTaskQueueConfigResponse. */
                class UpdateTaskQueueConfigResponse implements IUpdateTaskQueueConfigResponse {

                    /**
                     * Constructs a new UpdateTaskQueueConfigResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateTaskQueueConfigResponse);

                    /** UpdateTaskQueueConfigResponse config. */
                    public config?: (temporal.api.taskqueue.v1.ITaskQueueConfig|null);

                    /**
                     * Creates a new UpdateTaskQueueConfigResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateTaskQueueConfigResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateTaskQueueConfigResponse): temporal.api.workflowservice.v1.UpdateTaskQueueConfigResponse;

                    /**
                     * Encodes the specified UpdateTaskQueueConfigResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateTaskQueueConfigResponse.verify|verify} messages.
                     * @param message UpdateTaskQueueConfigResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateTaskQueueConfigResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateTaskQueueConfigResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateTaskQueueConfigResponse.verify|verify} messages.
                     * @param message UpdateTaskQueueConfigResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateTaskQueueConfigResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateTaskQueueConfigResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateTaskQueueConfigResponse
                     * @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): temporal.api.workflowservice.v1.UpdateTaskQueueConfigResponse;

                    /**
                     * Decodes an UpdateTaskQueueConfigResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateTaskQueueConfigResponse
                     * @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)): temporal.api.workflowservice.v1.UpdateTaskQueueConfigResponse;

                    /**
                     * Creates an UpdateTaskQueueConfigResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateTaskQueueConfigResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateTaskQueueConfigResponse;

                    /**
                     * Creates a plain object from an UpdateTaskQueueConfigResponse message. Also converts values to other types if specified.
                     * @param message UpdateTaskQueueConfigResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateTaskQueueConfigResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateTaskQueueConfigResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateTaskQueueConfigResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a FetchWorkerConfigRequest. */
                interface IFetchWorkerConfigRequest {

                    /** Namespace this worker belongs to. */
                    namespace?: (string|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** Reason for sending worker command, can be used for audit purpose. */
                    reason?: (string|null);

                    /**
                     * Defines which workers should receive this command.
                     * only single worker is supported at this time.
                     */
                    selector?: (temporal.api.common.v1.IWorkerSelector|null);
                }

                /** Represents a FetchWorkerConfigRequest. */
                class FetchWorkerConfigRequest implements IFetchWorkerConfigRequest {

                    /**
                     * Constructs a new FetchWorkerConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IFetchWorkerConfigRequest);

                    /** Namespace this worker belongs to. */
                    public namespace: string;

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** Reason for sending worker command, can be used for audit purpose. */
                    public reason: string;

                    /**
                     * Defines which workers should receive this command.
                     * only single worker is supported at this time.
                     */
                    public selector?: (temporal.api.common.v1.IWorkerSelector|null);

                    /**
                     * Creates a new FetchWorkerConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FetchWorkerConfigRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IFetchWorkerConfigRequest): temporal.api.workflowservice.v1.FetchWorkerConfigRequest;

                    /**
                     * Encodes the specified FetchWorkerConfigRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.FetchWorkerConfigRequest.verify|verify} messages.
                     * @param message FetchWorkerConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IFetchWorkerConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FetchWorkerConfigRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.FetchWorkerConfigRequest.verify|verify} messages.
                     * @param message FetchWorkerConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IFetchWorkerConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FetchWorkerConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FetchWorkerConfigRequest
                     * @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): temporal.api.workflowservice.v1.FetchWorkerConfigRequest;

                    /**
                     * Decodes a FetchWorkerConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FetchWorkerConfigRequest
                     * @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)): temporal.api.workflowservice.v1.FetchWorkerConfigRequest;

                    /**
                     * Creates a FetchWorkerConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FetchWorkerConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.FetchWorkerConfigRequest;

                    /**
                     * Creates a plain object from a FetchWorkerConfigRequest message. Also converts values to other types if specified.
                     * @param message FetchWorkerConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.FetchWorkerConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FetchWorkerConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FetchWorkerConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a FetchWorkerConfigResponse. */
                interface IFetchWorkerConfigResponse {

                    /** The worker configuration. */
                    workerConfig?: (temporal.api.sdk.v1.IWorkerConfig|null);
                }

                /** Represents a FetchWorkerConfigResponse. */
                class FetchWorkerConfigResponse implements IFetchWorkerConfigResponse {

                    /**
                     * Constructs a new FetchWorkerConfigResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IFetchWorkerConfigResponse);

                    /** The worker configuration. */
                    public workerConfig?: (temporal.api.sdk.v1.IWorkerConfig|null);

                    /**
                     * Creates a new FetchWorkerConfigResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FetchWorkerConfigResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IFetchWorkerConfigResponse): temporal.api.workflowservice.v1.FetchWorkerConfigResponse;

                    /**
                     * Encodes the specified FetchWorkerConfigResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.FetchWorkerConfigResponse.verify|verify} messages.
                     * @param message FetchWorkerConfigResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IFetchWorkerConfigResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FetchWorkerConfigResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.FetchWorkerConfigResponse.verify|verify} messages.
                     * @param message FetchWorkerConfigResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IFetchWorkerConfigResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FetchWorkerConfigResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FetchWorkerConfigResponse
                     * @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): temporal.api.workflowservice.v1.FetchWorkerConfigResponse;

                    /**
                     * Decodes a FetchWorkerConfigResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FetchWorkerConfigResponse
                     * @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)): temporal.api.workflowservice.v1.FetchWorkerConfigResponse;

                    /**
                     * Creates a FetchWorkerConfigResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FetchWorkerConfigResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.FetchWorkerConfigResponse;

                    /**
                     * Creates a plain object from a FetchWorkerConfigResponse message. Also converts values to other types if specified.
                     * @param message FetchWorkerConfigResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.FetchWorkerConfigResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FetchWorkerConfigResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FetchWorkerConfigResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateWorkerConfigRequest. */
                interface IUpdateWorkerConfigRequest {

                    /** Namespace this worker belongs to. */
                    namespace?: (string|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** Reason for sending worker command, can be used for audit purpose. */
                    reason?: (string|null);

                    /**
                     * Partial updates are accepted and controlled by update_mask.
                     * The worker configuration to set.
                     */
                    workerConfig?: (temporal.api.sdk.v1.IWorkerConfig|null);

                    /** Controls which fields from `worker_config` will be applied */
                    updateMask?: (google.protobuf.IFieldMask|null);

                    /** Defines which workers should receive this command. */
                    selector?: (temporal.api.common.v1.IWorkerSelector|null);
                }

                /** Represents an UpdateWorkerConfigRequest. */
                class UpdateWorkerConfigRequest implements IUpdateWorkerConfigRequest {

                    /**
                     * Constructs a new UpdateWorkerConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkerConfigRequest);

                    /** Namespace this worker belongs to. */
                    public namespace: string;

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** Reason for sending worker command, can be used for audit purpose. */
                    public reason: string;

                    /**
                     * Partial updates are accepted and controlled by update_mask.
                     * The worker configuration to set.
                     */
                    public workerConfig?: (temporal.api.sdk.v1.IWorkerConfig|null);

                    /** Controls which fields from `worker_config` will be applied */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /** Defines which workers should receive this command. */
                    public selector?: (temporal.api.common.v1.IWorkerSelector|null);

                    /**
                     * Creates a new UpdateWorkerConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkerConfigRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkerConfigRequest): temporal.api.workflowservice.v1.UpdateWorkerConfigRequest;

                    /**
                     * Encodes the specified UpdateWorkerConfigRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerConfigRequest.verify|verify} messages.
                     * @param message UpdateWorkerConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkerConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkerConfigRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerConfigRequest.verify|verify} messages.
                     * @param message UpdateWorkerConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkerConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkerConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkerConfigRequest
                     * @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): temporal.api.workflowservice.v1.UpdateWorkerConfigRequest;

                    /**
                     * Decodes an UpdateWorkerConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkerConfigRequest
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkerConfigRequest;

                    /**
                     * Creates an UpdateWorkerConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkerConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerConfigRequest;

                    /**
                     * Creates a plain object from an UpdateWorkerConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateWorkerConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkerConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkerConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateWorkerConfigResponse. */
                interface IUpdateWorkerConfigResponse {

                    /** The worker configuration. Will be returned if the command was sent to a single worker. */
                    workerConfig?: (temporal.api.sdk.v1.IWorkerConfig|null);
                }

                /** Represents an UpdateWorkerConfigResponse. */
                class UpdateWorkerConfigResponse implements IUpdateWorkerConfigResponse {

                    /**
                     * Constructs a new UpdateWorkerConfigResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUpdateWorkerConfigResponse);

                    /** The worker configuration. Will be returned if the command was sent to a single worker. */
                    public workerConfig?: (temporal.api.sdk.v1.IWorkerConfig|null);

                    /** UpdateWorkerConfigResponse response. */
                    public response?: "workerConfig";

                    /**
                     * Creates a new UpdateWorkerConfigResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateWorkerConfigResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUpdateWorkerConfigResponse): temporal.api.workflowservice.v1.UpdateWorkerConfigResponse;

                    /**
                     * Encodes the specified UpdateWorkerConfigResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerConfigResponse.verify|verify} messages.
                     * @param message UpdateWorkerConfigResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUpdateWorkerConfigResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateWorkerConfigResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UpdateWorkerConfigResponse.verify|verify} messages.
                     * @param message UpdateWorkerConfigResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUpdateWorkerConfigResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateWorkerConfigResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateWorkerConfigResponse
                     * @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): temporal.api.workflowservice.v1.UpdateWorkerConfigResponse;

                    /**
                     * Decodes an UpdateWorkerConfigResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateWorkerConfigResponse
                     * @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)): temporal.api.workflowservice.v1.UpdateWorkerConfigResponse;

                    /**
                     * Creates an UpdateWorkerConfigResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateWorkerConfigResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UpdateWorkerConfigResponse;

                    /**
                     * Creates a plain object from an UpdateWorkerConfigResponse message. Also converts values to other types if specified.
                     * @param message UpdateWorkerConfigResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UpdateWorkerConfigResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateWorkerConfigResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateWorkerConfigResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeWorkerRequest. */
                interface IDescribeWorkerRequest {

                    /** Namespace this worker belongs to. */
                    namespace?: (string|null);

                    /** Worker instance key to describe. */
                    workerInstanceKey?: (string|null);
                }

                /** Represents a DescribeWorkerRequest. */
                class DescribeWorkerRequest implements IDescribeWorkerRequest {

                    /**
                     * Constructs a new DescribeWorkerRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeWorkerRequest);

                    /** Namespace this worker belongs to. */
                    public namespace: string;

                    /** Worker instance key to describe. */
                    public workerInstanceKey: string;

                    /**
                     * Creates a new DescribeWorkerRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeWorkerRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeWorkerRequest): temporal.api.workflowservice.v1.DescribeWorkerRequest;

                    /**
                     * Encodes the specified DescribeWorkerRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerRequest.verify|verify} messages.
                     * @param message DescribeWorkerRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeWorkerRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeWorkerRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerRequest.verify|verify} messages.
                     * @param message DescribeWorkerRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeWorkerRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeWorkerRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeWorkerRequest
                     * @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): temporal.api.workflowservice.v1.DescribeWorkerRequest;

                    /**
                     * Decodes a DescribeWorkerRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeWorkerRequest
                     * @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)): temporal.api.workflowservice.v1.DescribeWorkerRequest;

                    /**
                     * Creates a DescribeWorkerRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeWorkerRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeWorkerRequest;

                    /**
                     * Creates a plain object from a DescribeWorkerRequest message. Also converts values to other types if specified.
                     * @param message DescribeWorkerRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeWorkerRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeWorkerRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeWorkerRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeWorkerResponse. */
                interface IDescribeWorkerResponse {

                    /** DescribeWorkerResponse workerInfo */
                    workerInfo?: (temporal.api.worker.v1.IWorkerInfo|null);
                }

                /** Represents a DescribeWorkerResponse. */
                class DescribeWorkerResponse implements IDescribeWorkerResponse {

                    /**
                     * Constructs a new DescribeWorkerResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeWorkerResponse);

                    /** DescribeWorkerResponse workerInfo. */
                    public workerInfo?: (temporal.api.worker.v1.IWorkerInfo|null);

                    /**
                     * Creates a new DescribeWorkerResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeWorkerResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeWorkerResponse): temporal.api.workflowservice.v1.DescribeWorkerResponse;

                    /**
                     * Encodes the specified DescribeWorkerResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerResponse.verify|verify} messages.
                     * @param message DescribeWorkerResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeWorkerResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeWorkerResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeWorkerResponse.verify|verify} messages.
                     * @param message DescribeWorkerResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeWorkerResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeWorkerResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeWorkerResponse
                     * @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): temporal.api.workflowservice.v1.DescribeWorkerResponse;

                    /**
                     * Decodes a DescribeWorkerResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeWorkerResponse
                     * @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)): temporal.api.workflowservice.v1.DescribeWorkerResponse;

                    /**
                     * Creates a DescribeWorkerResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeWorkerResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeWorkerResponse;

                    /**
                     * Creates a plain object from a DescribeWorkerResponse message. Also converts values to other types if specified.
                     * @param message DescribeWorkerResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeWorkerResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeWorkerResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeWorkerResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PauseWorkflowExecutionRequest. */
                interface IPauseWorkflowExecutionRequest {

                    /** Namespace of the workflow to pause. */
                    namespace?: (string|null);

                    /** ID of the workflow execution to be paused. Required. */
                    workflowId?: (string|null);

                    /** Run ID of the workflow execution to be paused. Optional. If not provided, the current run of the workflow will be paused. */
                    runId?: (string|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** Reason to pause the workflow execution. */
                    reason?: (string|null);

                    /** A unique identifier for this pause request for idempotence. Typically UUIDv4. */
                    requestId?: (string|null);
                }

                /** Request to pause a workflow execution. */
                class PauseWorkflowExecutionRequest implements IPauseWorkflowExecutionRequest {

                    /**
                     * Constructs a new PauseWorkflowExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPauseWorkflowExecutionRequest);

                    /** Namespace of the workflow to pause. */
                    public namespace: string;

                    /** ID of the workflow execution to be paused. Required. */
                    public workflowId: string;

                    /** Run ID of the workflow execution to be paused. Optional. If not provided, the current run of the workflow will be paused. */
                    public runId: string;

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** Reason to pause the workflow execution. */
                    public reason: string;

                    /** A unique identifier for this pause request for idempotence. Typically UUIDv4. */
                    public requestId: string;

                    /**
                     * Creates a new PauseWorkflowExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PauseWorkflowExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPauseWorkflowExecutionRequest): temporal.api.workflowservice.v1.PauseWorkflowExecutionRequest;

                    /**
                     * Encodes the specified PauseWorkflowExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.PauseWorkflowExecutionRequest.verify|verify} messages.
                     * @param message PauseWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPauseWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PauseWorkflowExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PauseWorkflowExecutionRequest.verify|verify} messages.
                     * @param message PauseWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPauseWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PauseWorkflowExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PauseWorkflowExecutionRequest
                     * @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): temporal.api.workflowservice.v1.PauseWorkflowExecutionRequest;

                    /**
                     * Decodes a PauseWorkflowExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PauseWorkflowExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.PauseWorkflowExecutionRequest;

                    /**
                     * Creates a PauseWorkflowExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PauseWorkflowExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PauseWorkflowExecutionRequest;

                    /**
                     * Creates a plain object from a PauseWorkflowExecutionRequest message. Also converts values to other types if specified.
                     * @param message PauseWorkflowExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PauseWorkflowExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PauseWorkflowExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PauseWorkflowExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PauseWorkflowExecutionResponse. */
                interface IPauseWorkflowExecutionResponse {
                }

                /** Response to a successful PauseWorkflowExecution request. */
                class PauseWorkflowExecutionResponse implements IPauseWorkflowExecutionResponse {

                    /**
                     * Constructs a new PauseWorkflowExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPauseWorkflowExecutionResponse);

                    /**
                     * Creates a new PauseWorkflowExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PauseWorkflowExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPauseWorkflowExecutionResponse): temporal.api.workflowservice.v1.PauseWorkflowExecutionResponse;

                    /**
                     * Encodes the specified PauseWorkflowExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.PauseWorkflowExecutionResponse.verify|verify} messages.
                     * @param message PauseWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPauseWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PauseWorkflowExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PauseWorkflowExecutionResponse.verify|verify} messages.
                     * @param message PauseWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPauseWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PauseWorkflowExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PauseWorkflowExecutionResponse
                     * @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): temporal.api.workflowservice.v1.PauseWorkflowExecutionResponse;

                    /**
                     * Decodes a PauseWorkflowExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PauseWorkflowExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.PauseWorkflowExecutionResponse;

                    /**
                     * Creates a PauseWorkflowExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PauseWorkflowExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PauseWorkflowExecutionResponse;

                    /**
                     * Creates a plain object from a PauseWorkflowExecutionResponse message. Also converts values to other types if specified.
                     * @param message PauseWorkflowExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PauseWorkflowExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PauseWorkflowExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PauseWorkflowExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UnpauseWorkflowExecutionRequest. */
                interface IUnpauseWorkflowExecutionRequest {

                    /** Namespace of the workflow to unpause. */
                    namespace?: (string|null);

                    /** ID of the workflow execution to be paused. Required. */
                    workflowId?: (string|null);

                    /** Run ID of the workflow execution to be paused. Optional. If not provided, the current run of the workflow will be paused. */
                    runId?: (string|null);

                    /** The identity of the client who initiated this request. */
                    identity?: (string|null);

                    /** Reason to unpause the workflow execution. */
                    reason?: (string|null);

                    /** A unique identifier for this unpause request for idempotence. Typically UUIDv4. */
                    requestId?: (string|null);
                }

                /** Represents an UnpauseWorkflowExecutionRequest. */
                class UnpauseWorkflowExecutionRequest implements IUnpauseWorkflowExecutionRequest {

                    /**
                     * Constructs a new UnpauseWorkflowExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUnpauseWorkflowExecutionRequest);

                    /** Namespace of the workflow to unpause. */
                    public namespace: string;

                    /** ID of the workflow execution to be paused. Required. */
                    public workflowId: string;

                    /** Run ID of the workflow execution to be paused. Optional. If not provided, the current run of the workflow will be paused. */
                    public runId: string;

                    /** The identity of the client who initiated this request. */
                    public identity: string;

                    /** Reason to unpause the workflow execution. */
                    public reason: string;

                    /** A unique identifier for this unpause request for idempotence. Typically UUIDv4. */
                    public requestId: string;

                    /**
                     * Creates a new UnpauseWorkflowExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UnpauseWorkflowExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUnpauseWorkflowExecutionRequest): temporal.api.workflowservice.v1.UnpauseWorkflowExecutionRequest;

                    /**
                     * Encodes the specified UnpauseWorkflowExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.UnpauseWorkflowExecutionRequest.verify|verify} messages.
                     * @param message UnpauseWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUnpauseWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UnpauseWorkflowExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UnpauseWorkflowExecutionRequest.verify|verify} messages.
                     * @param message UnpauseWorkflowExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUnpauseWorkflowExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UnpauseWorkflowExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UnpauseWorkflowExecutionRequest
                     * @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): temporal.api.workflowservice.v1.UnpauseWorkflowExecutionRequest;

                    /**
                     * Decodes an UnpauseWorkflowExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UnpauseWorkflowExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.UnpauseWorkflowExecutionRequest;

                    /**
                     * Creates an UnpauseWorkflowExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UnpauseWorkflowExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UnpauseWorkflowExecutionRequest;

                    /**
                     * Creates a plain object from an UnpauseWorkflowExecutionRequest message. Also converts values to other types if specified.
                     * @param message UnpauseWorkflowExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UnpauseWorkflowExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UnpauseWorkflowExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UnpauseWorkflowExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UnpauseWorkflowExecutionResponse. */
                interface IUnpauseWorkflowExecutionResponse {
                }

                /** Response to a successful UnpauseWorkflowExecution request. */
                class UnpauseWorkflowExecutionResponse implements IUnpauseWorkflowExecutionResponse {

                    /**
                     * Constructs a new UnpauseWorkflowExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IUnpauseWorkflowExecutionResponse);

                    /**
                     * Creates a new UnpauseWorkflowExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UnpauseWorkflowExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IUnpauseWorkflowExecutionResponse): temporal.api.workflowservice.v1.UnpauseWorkflowExecutionResponse;

                    /**
                     * Encodes the specified UnpauseWorkflowExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.UnpauseWorkflowExecutionResponse.verify|verify} messages.
                     * @param message UnpauseWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IUnpauseWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UnpauseWorkflowExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.UnpauseWorkflowExecutionResponse.verify|verify} messages.
                     * @param message UnpauseWorkflowExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IUnpauseWorkflowExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UnpauseWorkflowExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UnpauseWorkflowExecutionResponse
                     * @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): temporal.api.workflowservice.v1.UnpauseWorkflowExecutionResponse;

                    /**
                     * Decodes an UnpauseWorkflowExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UnpauseWorkflowExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.UnpauseWorkflowExecutionResponse;

                    /**
                     * Creates an UnpauseWorkflowExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UnpauseWorkflowExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.UnpauseWorkflowExecutionResponse;

                    /**
                     * Creates a plain object from an UnpauseWorkflowExecutionResponse message. Also converts values to other types if specified.
                     * @param message UnpauseWorkflowExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.UnpauseWorkflowExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UnpauseWorkflowExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UnpauseWorkflowExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartActivityExecutionRequest. */
                interface IStartActivityExecutionRequest {

                    /** StartActivityExecutionRequest namespace */
                    namespace?: (string|null);

                    /** The identity of the client who initiated this request */
                    identity?: (string|null);

                    /** A unique identifier for this start request. Typically UUIDv4. */
                    requestId?: (string|null);

                    /**
                     * Identifier for this activity. Required. This identifier should be meaningful in the user's
                     * own system. It must be unique among activities in the same namespace, subject to the rules
                     * imposed by id_reuse_policy and id_conflict_policy.
                     */
                    activityId?: (string|null);

                    /** The type of the activity, a string that corresponds to a registered activity on a worker. */
                    activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** Task queue to schedule this activity on. */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * Indicates how long the caller is willing to wait for an activity completion. Limits how long
                     * retries will be attempted. Either this or `start_to_close_timeout` must be specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Limits time an activity task can stay in a task queue before a worker picks it up. This
                     * timeout is always non retryable, as all a retry would achieve is to put it back into the same
                     * queue. Defaults to `schedule_to_close_timeout` if not specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum time an activity is allowed to execute after being picked up by a worker. This
                     * timeout is always retryable. Either this or `schedule_to_close_timeout` must be
                     * specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Maximum permitted time between successful worker heartbeats. */
                    heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /** The retry policy for the activity. Will never exceed `schedule_to_close_timeout`. */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Serialized arguments to the activity. These are passed as arguments to the activity function. */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Defines whether to allow re-using the activity id from a previously *closed* activity.
                     * The default policy is ACTIVITY_ID_REUSE_POLICY_ALLOW_DUPLICATE.
                     */
                    idReusePolicy?: (temporal.api.enums.v1.ActivityIdReusePolicy|null);

                    /**
                     * Defines how to resolve an activity id conflict with a *running* activity.
                     * The default policy is ACTIVITY_ID_CONFLICT_POLICY_FAIL.
                     */
                    idConflictPolicy?: (temporal.api.enums.v1.ActivityIdConflictPolicy|null);

                    /** Search attributes for indexing. */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** Header for context propagation and tracing purposes. */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** Metadata for use by user interfaces to display the fixed as-of-start summary and details of the activity. */
                    userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Priority metadata. */
                    priority?: (temporal.api.common.v1.IPriority|null);
                }

                /** Represents a StartActivityExecutionRequest. */
                class StartActivityExecutionRequest implements IStartActivityExecutionRequest {

                    /**
                     * Constructs a new StartActivityExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IStartActivityExecutionRequest);

                    /** StartActivityExecutionRequest namespace. */
                    public namespace: string;

                    /** The identity of the client who initiated this request */
                    public identity: string;

                    /** A unique identifier for this start request. Typically UUIDv4. */
                    public requestId: string;

                    /**
                     * Identifier for this activity. Required. This identifier should be meaningful in the user's
                     * own system. It must be unique among activities in the same namespace, subject to the rules
                     * imposed by id_reuse_policy and id_conflict_policy.
                     */
                    public activityId: string;

                    /** The type of the activity, a string that corresponds to a registered activity on a worker. */
                    public activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** Task queue to schedule this activity on. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * Indicates how long the caller is willing to wait for an activity completion. Limits how long
                     * retries will be attempted. Either this or `start_to_close_timeout` must be specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Limits time an activity task can stay in a task queue before a worker picks it up. This
                     * timeout is always non retryable, as all a retry would achieve is to put it back into the same
                     * queue. Defaults to `schedule_to_close_timeout` if not specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum time an activity is allowed to execute after being picked up by a worker. This
                     * timeout is always retryable. Either this or `schedule_to_close_timeout` must be
                     * specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Maximum permitted time between successful worker heartbeats. */
                    public heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /** The retry policy for the activity. Will never exceed `schedule_to_close_timeout`. */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Serialized arguments to the activity. These are passed as arguments to the activity function. */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Defines whether to allow re-using the activity id from a previously *closed* activity.
                     * The default policy is ACTIVITY_ID_REUSE_POLICY_ALLOW_DUPLICATE.
                     */
                    public idReusePolicy: temporal.api.enums.v1.ActivityIdReusePolicy;

                    /**
                     * Defines how to resolve an activity id conflict with a *running* activity.
                     * The default policy is ACTIVITY_ID_CONFLICT_POLICY_FAIL.
                     */
                    public idConflictPolicy: temporal.api.enums.v1.ActivityIdConflictPolicy;

                    /** Search attributes for indexing. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** Header for context propagation and tracing purposes. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** Metadata for use by user interfaces to display the fixed as-of-start summary and details of the activity. */
                    public userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Priority metadata. */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * Creates a new StartActivityExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartActivityExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IStartActivityExecutionRequest): temporal.api.workflowservice.v1.StartActivityExecutionRequest;

                    /**
                     * Encodes the specified StartActivityExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.StartActivityExecutionRequest.verify|verify} messages.
                     * @param message StartActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IStartActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartActivityExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.StartActivityExecutionRequest.verify|verify} messages.
                     * @param message StartActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IStartActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartActivityExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartActivityExecutionRequest
                     * @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): temporal.api.workflowservice.v1.StartActivityExecutionRequest;

                    /**
                     * Decodes a StartActivityExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartActivityExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.StartActivityExecutionRequest;

                    /**
                     * Creates a StartActivityExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartActivityExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.StartActivityExecutionRequest;

                    /**
                     * Creates a plain object from a StartActivityExecutionRequest message. Also converts values to other types if specified.
                     * @param message StartActivityExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.StartActivityExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartActivityExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartActivityExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartActivityExecutionResponse. */
                interface IStartActivityExecutionResponse {

                    /** The run ID of the activity that was started - or used (via ACTIVITY_ID_CONFLICT_POLICY_USE_EXISTING). */
                    runId?: (string|null);

                    /** If true, a new activity was started. */
                    started?: (boolean|null);
                }

                /** Represents a StartActivityExecutionResponse. */
                class StartActivityExecutionResponse implements IStartActivityExecutionResponse {

                    /**
                     * Constructs a new StartActivityExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IStartActivityExecutionResponse);

                    /** The run ID of the activity that was started - or used (via ACTIVITY_ID_CONFLICT_POLICY_USE_EXISTING). */
                    public runId: string;

                    /** If true, a new activity was started. */
                    public started: boolean;

                    /**
                     * Creates a new StartActivityExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartActivityExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IStartActivityExecutionResponse): temporal.api.workflowservice.v1.StartActivityExecutionResponse;

                    /**
                     * Encodes the specified StartActivityExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.StartActivityExecutionResponse.verify|verify} messages.
                     * @param message StartActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IStartActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartActivityExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.StartActivityExecutionResponse.verify|verify} messages.
                     * @param message StartActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IStartActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartActivityExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartActivityExecutionResponse
                     * @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): temporal.api.workflowservice.v1.StartActivityExecutionResponse;

                    /**
                     * Decodes a StartActivityExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartActivityExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.StartActivityExecutionResponse;

                    /**
                     * Creates a StartActivityExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartActivityExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.StartActivityExecutionResponse;

                    /**
                     * Creates a plain object from a StartActivityExecutionResponse message. Also converts values to other types if specified.
                     * @param message StartActivityExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.StartActivityExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartActivityExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartActivityExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeActivityExecutionRequest. */
                interface IDescribeActivityExecutionRequest {

                    /** DescribeActivityExecutionRequest namespace */
                    namespace?: (string|null);

                    /** DescribeActivityExecutionRequest activityId */
                    activityId?: (string|null);

                    /** Activity run ID. If empty the request targets the latest run. */
                    runId?: (string|null);

                    /** Include the input field in the response. */
                    includeInput?: (boolean|null);

                    /** Include the outcome (result/failure) in the response if the activity has completed. */
                    includeOutcome?: (boolean|null);

                    /**
                     * Token from a previous DescribeActivityExecutionResponse. If present, long-poll until activity
                     * state changes from the state encoded in this token. If absent, return current state immediately.
                     * If present, run_id must also be present.
                     * Note that activity state may change multiple times between requests, therefore it is not
                     * guaranteed that a client making a sequence of long-poll requests will see a complete
                     * sequence of state changes.
                     */
                    longPollToken?: (Uint8Array|null);
                }

                /** Represents a DescribeActivityExecutionRequest. */
                class DescribeActivityExecutionRequest implements IDescribeActivityExecutionRequest {

                    /**
                     * Constructs a new DescribeActivityExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeActivityExecutionRequest);

                    /** DescribeActivityExecutionRequest namespace. */
                    public namespace: string;

                    /** DescribeActivityExecutionRequest activityId. */
                    public activityId: string;

                    /** Activity run ID. If empty the request targets the latest run. */
                    public runId: string;

                    /** Include the input field in the response. */
                    public includeInput: boolean;

                    /** Include the outcome (result/failure) in the response if the activity has completed. */
                    public includeOutcome: boolean;

                    /**
                     * Token from a previous DescribeActivityExecutionResponse. If present, long-poll until activity
                     * state changes from the state encoded in this token. If absent, return current state immediately.
                     * If present, run_id must also be present.
                     * Note that activity state may change multiple times between requests, therefore it is not
                     * guaranteed that a client making a sequence of long-poll requests will see a complete
                     * sequence of state changes.
                     */
                    public longPollToken: Uint8Array;

                    /**
                     * Creates a new DescribeActivityExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeActivityExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeActivityExecutionRequest): temporal.api.workflowservice.v1.DescribeActivityExecutionRequest;

                    /**
                     * Encodes the specified DescribeActivityExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeActivityExecutionRequest.verify|verify} messages.
                     * @param message DescribeActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeActivityExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeActivityExecutionRequest.verify|verify} messages.
                     * @param message DescribeActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeActivityExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeActivityExecutionRequest
                     * @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): temporal.api.workflowservice.v1.DescribeActivityExecutionRequest;

                    /**
                     * Decodes a DescribeActivityExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeActivityExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.DescribeActivityExecutionRequest;

                    /**
                     * Creates a DescribeActivityExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeActivityExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeActivityExecutionRequest;

                    /**
                     * Creates a plain object from a DescribeActivityExecutionRequest message. Also converts values to other types if specified.
                     * @param message DescribeActivityExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeActivityExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeActivityExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeActivityExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DescribeActivityExecutionResponse. */
                interface IDescribeActivityExecutionResponse {

                    /** The run ID of the activity, useful when run_id was not specified in the request. */
                    runId?: (string|null);

                    /** Information about the activity execution. */
                    info?: (temporal.api.activity.v1.IActivityExecutionInfo|null);

                    /**
                     * Serialized activity input, passed as arguments to the activity function.
                     * Only set if include_input was true in the request.
                     */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** Only set if the activity is completed and include_outcome was true in the request. */
                    outcome?: (temporal.api.activity.v1.IActivityExecutionOutcome|null);

                    /** Token for follow-on long-poll requests. Absent only if the activity is complete. */
                    longPollToken?: (Uint8Array|null);
                }

                /** Represents a DescribeActivityExecutionResponse. */
                class DescribeActivityExecutionResponse implements IDescribeActivityExecutionResponse {

                    /**
                     * Constructs a new DescribeActivityExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDescribeActivityExecutionResponse);

                    /** The run ID of the activity, useful when run_id was not specified in the request. */
                    public runId: string;

                    /** Information about the activity execution. */
                    public info?: (temporal.api.activity.v1.IActivityExecutionInfo|null);

                    /**
                     * Serialized activity input, passed as arguments to the activity function.
                     * Only set if include_input was true in the request.
                     */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** Only set if the activity is completed and include_outcome was true in the request. */
                    public outcome?: (temporal.api.activity.v1.IActivityExecutionOutcome|null);

                    /** Token for follow-on long-poll requests. Absent only if the activity is complete. */
                    public longPollToken: Uint8Array;

                    /**
                     * Creates a new DescribeActivityExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DescribeActivityExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDescribeActivityExecutionResponse): temporal.api.workflowservice.v1.DescribeActivityExecutionResponse;

                    /**
                     * Encodes the specified DescribeActivityExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeActivityExecutionResponse.verify|verify} messages.
                     * @param message DescribeActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDescribeActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DescribeActivityExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DescribeActivityExecutionResponse.verify|verify} messages.
                     * @param message DescribeActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDescribeActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DescribeActivityExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DescribeActivityExecutionResponse
                     * @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): temporal.api.workflowservice.v1.DescribeActivityExecutionResponse;

                    /**
                     * Decodes a DescribeActivityExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DescribeActivityExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.DescribeActivityExecutionResponse;

                    /**
                     * Creates a DescribeActivityExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DescribeActivityExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DescribeActivityExecutionResponse;

                    /**
                     * Creates a plain object from a DescribeActivityExecutionResponse message. Also converts values to other types if specified.
                     * @param message DescribeActivityExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DescribeActivityExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DescribeActivityExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DescribeActivityExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollActivityExecutionRequest. */
                interface IPollActivityExecutionRequest {

                    /** PollActivityExecutionRequest namespace */
                    namespace?: (string|null);

                    /** PollActivityExecutionRequest activityId */
                    activityId?: (string|null);

                    /** Activity run ID. If empty the request targets the latest run. */
                    runId?: (string|null);
                }

                /** Represents a PollActivityExecutionRequest. */
                class PollActivityExecutionRequest implements IPollActivityExecutionRequest {

                    /**
                     * Constructs a new PollActivityExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPollActivityExecutionRequest);

                    /** PollActivityExecutionRequest namespace. */
                    public namespace: string;

                    /** PollActivityExecutionRequest activityId. */
                    public activityId: string;

                    /** Activity run ID. If empty the request targets the latest run. */
                    public runId: string;

                    /**
                     * Creates a new PollActivityExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollActivityExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPollActivityExecutionRequest): temporal.api.workflowservice.v1.PollActivityExecutionRequest;

                    /**
                     * Encodes the specified PollActivityExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.PollActivityExecutionRequest.verify|verify} messages.
                     * @param message PollActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPollActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollActivityExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PollActivityExecutionRequest.verify|verify} messages.
                     * @param message PollActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPollActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollActivityExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollActivityExecutionRequest
                     * @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): temporal.api.workflowservice.v1.PollActivityExecutionRequest;

                    /**
                     * Decodes a PollActivityExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollActivityExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.PollActivityExecutionRequest;

                    /**
                     * Creates a PollActivityExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollActivityExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PollActivityExecutionRequest;

                    /**
                     * Creates a plain object from a PollActivityExecutionRequest message. Also converts values to other types if specified.
                     * @param message PollActivityExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PollActivityExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollActivityExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollActivityExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollActivityExecutionResponse. */
                interface IPollActivityExecutionResponse {

                    /** The run ID of the activity, useful when run_id was not specified in the request. */
                    runId?: (string|null);

                    /** PollActivityExecutionResponse outcome */
                    outcome?: (temporal.api.activity.v1.IActivityExecutionOutcome|null);
                }

                /** Represents a PollActivityExecutionResponse. */
                class PollActivityExecutionResponse implements IPollActivityExecutionResponse {

                    /**
                     * Constructs a new PollActivityExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IPollActivityExecutionResponse);

                    /** The run ID of the activity, useful when run_id was not specified in the request. */
                    public runId: string;

                    /** PollActivityExecutionResponse outcome. */
                    public outcome?: (temporal.api.activity.v1.IActivityExecutionOutcome|null);

                    /**
                     * Creates a new PollActivityExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollActivityExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IPollActivityExecutionResponse): temporal.api.workflowservice.v1.PollActivityExecutionResponse;

                    /**
                     * Encodes the specified PollActivityExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.PollActivityExecutionResponse.verify|verify} messages.
                     * @param message PollActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IPollActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollActivityExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.PollActivityExecutionResponse.verify|verify} messages.
                     * @param message PollActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IPollActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollActivityExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollActivityExecutionResponse
                     * @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): temporal.api.workflowservice.v1.PollActivityExecutionResponse;

                    /**
                     * Decodes a PollActivityExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollActivityExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.PollActivityExecutionResponse;

                    /**
                     * Creates a PollActivityExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollActivityExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.PollActivityExecutionResponse;

                    /**
                     * Creates a plain object from a PollActivityExecutionResponse message. Also converts values to other types if specified.
                     * @param message PollActivityExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.PollActivityExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollActivityExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollActivityExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListActivityExecutionsRequest. */
                interface IListActivityExecutionsRequest {

                    /** ListActivityExecutionsRequest namespace */
                    namespace?: (string|null);

                    /** Max number of executions to return per page. */
                    pageSize?: (number|null);

                    /** Token returned in ListActivityExecutionsResponse. */
                    nextPageToken?: (Uint8Array|null);

                    /** Visibility query, see https://docs.temporal.io/list-filter for the syntax. */
                    query?: (string|null);
                }

                /** Represents a ListActivityExecutionsRequest. */
                class ListActivityExecutionsRequest implements IListActivityExecutionsRequest {

                    /**
                     * Constructs a new ListActivityExecutionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListActivityExecutionsRequest);

                    /** ListActivityExecutionsRequest namespace. */
                    public namespace: string;

                    /** Max number of executions to return per page. */
                    public pageSize: number;

                    /** Token returned in ListActivityExecutionsResponse. */
                    public nextPageToken: Uint8Array;

                    /** Visibility query, see https://docs.temporal.io/list-filter for the syntax. */
                    public query: string;

                    /**
                     * Creates a new ListActivityExecutionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListActivityExecutionsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListActivityExecutionsRequest): temporal.api.workflowservice.v1.ListActivityExecutionsRequest;

                    /**
                     * Encodes the specified ListActivityExecutionsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.ListActivityExecutionsRequest.verify|verify} messages.
                     * @param message ListActivityExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListActivityExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListActivityExecutionsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListActivityExecutionsRequest.verify|verify} messages.
                     * @param message ListActivityExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListActivityExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListActivityExecutionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListActivityExecutionsRequest
                     * @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): temporal.api.workflowservice.v1.ListActivityExecutionsRequest;

                    /**
                     * Decodes a ListActivityExecutionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListActivityExecutionsRequest
                     * @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)): temporal.api.workflowservice.v1.ListActivityExecutionsRequest;

                    /**
                     * Creates a ListActivityExecutionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListActivityExecutionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListActivityExecutionsRequest;

                    /**
                     * Creates a plain object from a ListActivityExecutionsRequest message. Also converts values to other types if specified.
                     * @param message ListActivityExecutionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListActivityExecutionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListActivityExecutionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListActivityExecutionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListActivityExecutionsResponse. */
                interface IListActivityExecutionsResponse {

                    /** ListActivityExecutionsResponse executions */
                    executions?: (temporal.api.activity.v1.IActivityExecutionListInfo[]|null);

                    /** Token to use to fetch the next page. If empty, there is no next page. */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListActivityExecutionsResponse. */
                class ListActivityExecutionsResponse implements IListActivityExecutionsResponse {

                    /**
                     * Constructs a new ListActivityExecutionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IListActivityExecutionsResponse);

                    /** ListActivityExecutionsResponse executions. */
                    public executions: temporal.api.activity.v1.IActivityExecutionListInfo[];

                    /** Token to use to fetch the next page. If empty, there is no next page. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListActivityExecutionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListActivityExecutionsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IListActivityExecutionsResponse): temporal.api.workflowservice.v1.ListActivityExecutionsResponse;

                    /**
                     * Encodes the specified ListActivityExecutionsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.ListActivityExecutionsResponse.verify|verify} messages.
                     * @param message ListActivityExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IListActivityExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListActivityExecutionsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.ListActivityExecutionsResponse.verify|verify} messages.
                     * @param message ListActivityExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IListActivityExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListActivityExecutionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListActivityExecutionsResponse
                     * @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): temporal.api.workflowservice.v1.ListActivityExecutionsResponse;

                    /**
                     * Decodes a ListActivityExecutionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListActivityExecutionsResponse
                     * @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)): temporal.api.workflowservice.v1.ListActivityExecutionsResponse;

                    /**
                     * Creates a ListActivityExecutionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListActivityExecutionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.ListActivityExecutionsResponse;

                    /**
                     * Creates a plain object from a ListActivityExecutionsResponse message. Also converts values to other types if specified.
                     * @param message ListActivityExecutionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.ListActivityExecutionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListActivityExecutionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListActivityExecutionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CountActivityExecutionsRequest. */
                interface ICountActivityExecutionsRequest {

                    /** CountActivityExecutionsRequest namespace */
                    namespace?: (string|null);

                    /** Visibility query, see https://docs.temporal.io/list-filter for the syntax. */
                    query?: (string|null);
                }

                /** Represents a CountActivityExecutionsRequest. */
                class CountActivityExecutionsRequest implements ICountActivityExecutionsRequest {

                    /**
                     * Constructs a new CountActivityExecutionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ICountActivityExecutionsRequest);

                    /** CountActivityExecutionsRequest namespace. */
                    public namespace: string;

                    /** Visibility query, see https://docs.temporal.io/list-filter for the syntax. */
                    public query: string;

                    /**
                     * Creates a new CountActivityExecutionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CountActivityExecutionsRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ICountActivityExecutionsRequest): temporal.api.workflowservice.v1.CountActivityExecutionsRequest;

                    /**
                     * Encodes the specified CountActivityExecutionsRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.CountActivityExecutionsRequest.verify|verify} messages.
                     * @param message CountActivityExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ICountActivityExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CountActivityExecutionsRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CountActivityExecutionsRequest.verify|verify} messages.
                     * @param message CountActivityExecutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ICountActivityExecutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CountActivityExecutionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CountActivityExecutionsRequest
                     * @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): temporal.api.workflowservice.v1.CountActivityExecutionsRequest;

                    /**
                     * Decodes a CountActivityExecutionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CountActivityExecutionsRequest
                     * @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)): temporal.api.workflowservice.v1.CountActivityExecutionsRequest;

                    /**
                     * Creates a CountActivityExecutionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CountActivityExecutionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CountActivityExecutionsRequest;

                    /**
                     * Creates a plain object from a CountActivityExecutionsRequest message. Also converts values to other types if specified.
                     * @param message CountActivityExecutionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.CountActivityExecutionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CountActivityExecutionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CountActivityExecutionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CountActivityExecutionsResponse. */
                interface ICountActivityExecutionsResponse {

                    /**
                     * If `query` is not grouping by any field, the count is an approximate number
                     * of activities that match the query.
                     * If `query` is grouping by a field, the count is simply the sum of the counts
                     * of the groups returned in the response. This number can be smaller than the
                     * total number of activities matching the query.
                     */
                    count?: (Long|null);

                    /**
                     * Contains the groups if the request is grouping by a field.
                     * The list might not be complete, and the counts of each group is approximate.
                     */
                    groups?: (temporal.api.workflowservice.v1.CountActivityExecutionsResponse.IAggregationGroup[]|null);
                }

                /** Represents a CountActivityExecutionsResponse. */
                class CountActivityExecutionsResponse implements ICountActivityExecutionsResponse {

                    /**
                     * Constructs a new CountActivityExecutionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ICountActivityExecutionsResponse);

                    /**
                     * If `query` is not grouping by any field, the count is an approximate number
                     * of activities that match the query.
                     * If `query` is grouping by a field, the count is simply the sum of the counts
                     * of the groups returned in the response. This number can be smaller than the
                     * total number of activities matching the query.
                     */
                    public count: Long;

                    /**
                     * Contains the groups if the request is grouping by a field.
                     * The list might not be complete, and the counts of each group is approximate.
                     */
                    public groups: temporal.api.workflowservice.v1.CountActivityExecutionsResponse.IAggregationGroup[];

                    /**
                     * Creates a new CountActivityExecutionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CountActivityExecutionsResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ICountActivityExecutionsResponse): temporal.api.workflowservice.v1.CountActivityExecutionsResponse;

                    /**
                     * Encodes the specified CountActivityExecutionsResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.CountActivityExecutionsResponse.verify|verify} messages.
                     * @param message CountActivityExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ICountActivityExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CountActivityExecutionsResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CountActivityExecutionsResponse.verify|verify} messages.
                     * @param message CountActivityExecutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ICountActivityExecutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CountActivityExecutionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CountActivityExecutionsResponse
                     * @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): temporal.api.workflowservice.v1.CountActivityExecutionsResponse;

                    /**
                     * Decodes a CountActivityExecutionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CountActivityExecutionsResponse
                     * @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)): temporal.api.workflowservice.v1.CountActivityExecutionsResponse;

                    /**
                     * Creates a CountActivityExecutionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CountActivityExecutionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CountActivityExecutionsResponse;

                    /**
                     * Creates a plain object from a CountActivityExecutionsResponse message. Also converts values to other types if specified.
                     * @param message CountActivityExecutionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.CountActivityExecutionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CountActivityExecutionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CountActivityExecutionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace CountActivityExecutionsResponse {

                    /** Properties of an AggregationGroup. */
                    interface IAggregationGroup {

                        /** AggregationGroup groupValues */
                        groupValues?: (temporal.api.common.v1.IPayload[]|null);

                        /** AggregationGroup count */
                        count?: (Long|null);
                    }

                    /** Represents an AggregationGroup. */
                    class AggregationGroup implements IAggregationGroup {

                        /**
                         * Constructs a new AggregationGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflowservice.v1.CountActivityExecutionsResponse.IAggregationGroup);

                        /** AggregationGroup groupValues. */
                        public groupValues: temporal.api.common.v1.IPayload[];

                        /** AggregationGroup count. */
                        public count: Long;

                        /**
                         * Creates a new AggregationGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AggregationGroup instance
                         */
                        public static create(properties?: temporal.api.workflowservice.v1.CountActivityExecutionsResponse.IAggregationGroup): temporal.api.workflowservice.v1.CountActivityExecutionsResponse.AggregationGroup;

                        /**
                         * Encodes the specified AggregationGroup message. Does not implicitly {@link temporal.api.workflowservice.v1.CountActivityExecutionsResponse.AggregationGroup.verify|verify} messages.
                         * @param message AggregationGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflowservice.v1.CountActivityExecutionsResponse.IAggregationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AggregationGroup message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.CountActivityExecutionsResponse.AggregationGroup.verify|verify} messages.
                         * @param message AggregationGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflowservice.v1.CountActivityExecutionsResponse.IAggregationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AggregationGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AggregationGroup
                         * @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): temporal.api.workflowservice.v1.CountActivityExecutionsResponse.AggregationGroup;

                        /**
                         * Decodes an AggregationGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AggregationGroup
                         * @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)): temporal.api.workflowservice.v1.CountActivityExecutionsResponse.AggregationGroup;

                        /**
                         * Creates an AggregationGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AggregationGroup
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.CountActivityExecutionsResponse.AggregationGroup;

                        /**
                         * Creates a plain object from an AggregationGroup message. Also converts values to other types if specified.
                         * @param message AggregationGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflowservice.v1.CountActivityExecutionsResponse.AggregationGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AggregationGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AggregationGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a RequestCancelActivityExecutionRequest. */
                interface IRequestCancelActivityExecutionRequest {

                    /** RequestCancelActivityExecutionRequest namespace */
                    namespace?: (string|null);

                    /** RequestCancelActivityExecutionRequest activityId */
                    activityId?: (string|null);

                    /** Activity run ID, targets the latest run if run_id is empty. */
                    runId?: (string|null);

                    /** The identity of the worker/client. */
                    identity?: (string|null);

                    /** Used to de-dupe cancellation requests. */
                    requestId?: (string|null);

                    /**
                     * Reason for requesting the cancellation, recorded and available via the PollActivityExecution API.
                     * Not propagated to a worker if an activity attempt is currently running.
                     */
                    reason?: (string|null);
                }

                /** Represents a RequestCancelActivityExecutionRequest. */
                class RequestCancelActivityExecutionRequest implements IRequestCancelActivityExecutionRequest {

                    /**
                     * Constructs a new RequestCancelActivityExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRequestCancelActivityExecutionRequest);

                    /** RequestCancelActivityExecutionRequest namespace. */
                    public namespace: string;

                    /** RequestCancelActivityExecutionRequest activityId. */
                    public activityId: string;

                    /** Activity run ID, targets the latest run if run_id is empty. */
                    public runId: string;

                    /** The identity of the worker/client. */
                    public identity: string;

                    /** Used to de-dupe cancellation requests. */
                    public requestId: string;

                    /**
                     * Reason for requesting the cancellation, recorded and available via the PollActivityExecution API.
                     * Not propagated to a worker if an activity attempt is currently running.
                     */
                    public reason: string;

                    /**
                     * Creates a new RequestCancelActivityExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RequestCancelActivityExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRequestCancelActivityExecutionRequest): temporal.api.workflowservice.v1.RequestCancelActivityExecutionRequest;

                    /**
                     * Encodes the specified RequestCancelActivityExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.RequestCancelActivityExecutionRequest.verify|verify} messages.
                     * @param message RequestCancelActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRequestCancelActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RequestCancelActivityExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RequestCancelActivityExecutionRequest.verify|verify} messages.
                     * @param message RequestCancelActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRequestCancelActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RequestCancelActivityExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RequestCancelActivityExecutionRequest
                     * @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): temporal.api.workflowservice.v1.RequestCancelActivityExecutionRequest;

                    /**
                     * Decodes a RequestCancelActivityExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RequestCancelActivityExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.RequestCancelActivityExecutionRequest;

                    /**
                     * Creates a RequestCancelActivityExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RequestCancelActivityExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RequestCancelActivityExecutionRequest;

                    /**
                     * Creates a plain object from a RequestCancelActivityExecutionRequest message. Also converts values to other types if specified.
                     * @param message RequestCancelActivityExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RequestCancelActivityExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RequestCancelActivityExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RequestCancelActivityExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RequestCancelActivityExecutionResponse. */
                interface IRequestCancelActivityExecutionResponse {
                }

                /** Represents a RequestCancelActivityExecutionResponse. */
                class RequestCancelActivityExecutionResponse implements IRequestCancelActivityExecutionResponse {

                    /**
                     * Constructs a new RequestCancelActivityExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IRequestCancelActivityExecutionResponse);

                    /**
                     * Creates a new RequestCancelActivityExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RequestCancelActivityExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IRequestCancelActivityExecutionResponse): temporal.api.workflowservice.v1.RequestCancelActivityExecutionResponse;

                    /**
                     * Encodes the specified RequestCancelActivityExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.RequestCancelActivityExecutionResponse.verify|verify} messages.
                     * @param message RequestCancelActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IRequestCancelActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RequestCancelActivityExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.RequestCancelActivityExecutionResponse.verify|verify} messages.
                     * @param message RequestCancelActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IRequestCancelActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RequestCancelActivityExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RequestCancelActivityExecutionResponse
                     * @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): temporal.api.workflowservice.v1.RequestCancelActivityExecutionResponse;

                    /**
                     * Decodes a RequestCancelActivityExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RequestCancelActivityExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.RequestCancelActivityExecutionResponse;

                    /**
                     * Creates a RequestCancelActivityExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RequestCancelActivityExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.RequestCancelActivityExecutionResponse;

                    /**
                     * Creates a plain object from a RequestCancelActivityExecutionResponse message. Also converts values to other types if specified.
                     * @param message RequestCancelActivityExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.RequestCancelActivityExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RequestCancelActivityExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RequestCancelActivityExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TerminateActivityExecutionRequest. */
                interface ITerminateActivityExecutionRequest {

                    /** TerminateActivityExecutionRequest namespace */
                    namespace?: (string|null);

                    /** TerminateActivityExecutionRequest activityId */
                    activityId?: (string|null);

                    /** Activity run ID, targets the latest run if run_id is empty. */
                    runId?: (string|null);

                    /** The identity of the worker/client. */
                    identity?: (string|null);

                    /** Used to de-dupe termination requests. */
                    requestId?: (string|null);

                    /** Reason for requesting the termination, recorded in in the activity's result failure outcome. */
                    reason?: (string|null);
                }

                /** Represents a TerminateActivityExecutionRequest. */
                class TerminateActivityExecutionRequest implements ITerminateActivityExecutionRequest {

                    /**
                     * Constructs a new TerminateActivityExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ITerminateActivityExecutionRequest);

                    /** TerminateActivityExecutionRequest namespace. */
                    public namespace: string;

                    /** TerminateActivityExecutionRequest activityId. */
                    public activityId: string;

                    /** Activity run ID, targets the latest run if run_id is empty. */
                    public runId: string;

                    /** The identity of the worker/client. */
                    public identity: string;

                    /** Used to de-dupe termination requests. */
                    public requestId: string;

                    /** Reason for requesting the termination, recorded in in the activity's result failure outcome. */
                    public reason: string;

                    /**
                     * Creates a new TerminateActivityExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TerminateActivityExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ITerminateActivityExecutionRequest): temporal.api.workflowservice.v1.TerminateActivityExecutionRequest;

                    /**
                     * Encodes the specified TerminateActivityExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.TerminateActivityExecutionRequest.verify|verify} messages.
                     * @param message TerminateActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ITerminateActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TerminateActivityExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.TerminateActivityExecutionRequest.verify|verify} messages.
                     * @param message TerminateActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ITerminateActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TerminateActivityExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TerminateActivityExecutionRequest
                     * @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): temporal.api.workflowservice.v1.TerminateActivityExecutionRequest;

                    /**
                     * Decodes a TerminateActivityExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TerminateActivityExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.TerminateActivityExecutionRequest;

                    /**
                     * Creates a TerminateActivityExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TerminateActivityExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.TerminateActivityExecutionRequest;

                    /**
                     * Creates a plain object from a TerminateActivityExecutionRequest message. Also converts values to other types if specified.
                     * @param message TerminateActivityExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.TerminateActivityExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TerminateActivityExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TerminateActivityExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TerminateActivityExecutionResponse. */
                interface ITerminateActivityExecutionResponse {
                }

                /** Represents a TerminateActivityExecutionResponse. */
                class TerminateActivityExecutionResponse implements ITerminateActivityExecutionResponse {

                    /**
                     * Constructs a new TerminateActivityExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.ITerminateActivityExecutionResponse);

                    /**
                     * Creates a new TerminateActivityExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TerminateActivityExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.ITerminateActivityExecutionResponse): temporal.api.workflowservice.v1.TerminateActivityExecutionResponse;

                    /**
                     * Encodes the specified TerminateActivityExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.TerminateActivityExecutionResponse.verify|verify} messages.
                     * @param message TerminateActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.ITerminateActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TerminateActivityExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.TerminateActivityExecutionResponse.verify|verify} messages.
                     * @param message TerminateActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.ITerminateActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TerminateActivityExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TerminateActivityExecutionResponse
                     * @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): temporal.api.workflowservice.v1.TerminateActivityExecutionResponse;

                    /**
                     * Decodes a TerminateActivityExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TerminateActivityExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.TerminateActivityExecutionResponse;

                    /**
                     * Creates a TerminateActivityExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TerminateActivityExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.TerminateActivityExecutionResponse;

                    /**
                     * Creates a plain object from a TerminateActivityExecutionResponse message. Also converts values to other types if specified.
                     * @param message TerminateActivityExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.TerminateActivityExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TerminateActivityExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TerminateActivityExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteActivityExecutionRequest. */
                interface IDeleteActivityExecutionRequest {

                    /** DeleteActivityExecutionRequest namespace */
                    namespace?: (string|null);

                    /** DeleteActivityExecutionRequest activityId */
                    activityId?: (string|null);

                    /** Activity run ID, targets the latest run if run_id is empty. */
                    runId?: (string|null);
                }

                /** Represents a DeleteActivityExecutionRequest. */
                class DeleteActivityExecutionRequest implements IDeleteActivityExecutionRequest {

                    /**
                     * Constructs a new DeleteActivityExecutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteActivityExecutionRequest);

                    /** DeleteActivityExecutionRequest namespace. */
                    public namespace: string;

                    /** DeleteActivityExecutionRequest activityId. */
                    public activityId: string;

                    /** Activity run ID, targets the latest run if run_id is empty. */
                    public runId: string;

                    /**
                     * Creates a new DeleteActivityExecutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteActivityExecutionRequest instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteActivityExecutionRequest): temporal.api.workflowservice.v1.DeleteActivityExecutionRequest;

                    /**
                     * Encodes the specified DeleteActivityExecutionRequest message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteActivityExecutionRequest.verify|verify} messages.
                     * @param message DeleteActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteActivityExecutionRequest message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteActivityExecutionRequest.verify|verify} messages.
                     * @param message DeleteActivityExecutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteActivityExecutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteActivityExecutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteActivityExecutionRequest
                     * @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): temporal.api.workflowservice.v1.DeleteActivityExecutionRequest;

                    /**
                     * Decodes a DeleteActivityExecutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteActivityExecutionRequest
                     * @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)): temporal.api.workflowservice.v1.DeleteActivityExecutionRequest;

                    /**
                     * Creates a DeleteActivityExecutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteActivityExecutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteActivityExecutionRequest;

                    /**
                     * Creates a plain object from a DeleteActivityExecutionRequest message. Also converts values to other types if specified.
                     * @param message DeleteActivityExecutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteActivityExecutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteActivityExecutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteActivityExecutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteActivityExecutionResponse. */
                interface IDeleteActivityExecutionResponse {
                }

                /** Represents a DeleteActivityExecutionResponse. */
                class DeleteActivityExecutionResponse implements IDeleteActivityExecutionResponse {

                    /**
                     * Constructs a new DeleteActivityExecutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflowservice.v1.IDeleteActivityExecutionResponse);

                    /**
                     * Creates a new DeleteActivityExecutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteActivityExecutionResponse instance
                     */
                    public static create(properties?: temporal.api.workflowservice.v1.IDeleteActivityExecutionResponse): temporal.api.workflowservice.v1.DeleteActivityExecutionResponse;

                    /**
                     * Encodes the specified DeleteActivityExecutionResponse message. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteActivityExecutionResponse.verify|verify} messages.
                     * @param message DeleteActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflowservice.v1.IDeleteActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteActivityExecutionResponse message, length delimited. Does not implicitly {@link temporal.api.workflowservice.v1.DeleteActivityExecutionResponse.verify|verify} messages.
                     * @param message DeleteActivityExecutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflowservice.v1.IDeleteActivityExecutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteActivityExecutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteActivityExecutionResponse
                     * @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): temporal.api.workflowservice.v1.DeleteActivityExecutionResponse;

                    /**
                     * Decodes a DeleteActivityExecutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteActivityExecutionResponse
                     * @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)): temporal.api.workflowservice.v1.DeleteActivityExecutionResponse;

                    /**
                     * Creates a DeleteActivityExecutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteActivityExecutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflowservice.v1.DeleteActivityExecutionResponse;

                    /**
                     * Creates a plain object from a DeleteActivityExecutionResponse message. Also converts values to other types if specified.
                     * @param message DeleteActivityExecutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflowservice.v1.DeleteActivityExecutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteActivityExecutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteActivityExecutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /**
                 * WorkflowService API defines how Temporal SDKs and other clients interact with the Temporal server
                 * to create and interact with workflows and activities.
                 *
                 * Users are expected to call `StartWorkflowExecution` to create a new workflow execution.
                 *
                 * To drive workflows, a worker using a Temporal SDK must exist which regularly polls for workflow
                 * and activity tasks from the service. For each workflow task, the sdk must process the
                 * (incremental or complete) event history and respond back with any newly generated commands.
                 *
                 * For each activity task, the worker is expected to execute the user's code which implements that
                 * activity, responding with completion or failure.
                 */
                class WorkflowService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new WorkflowService 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 WorkflowService 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): WorkflowService;

                    /**
                     * RegisterNamespace creates a new namespace which can be used as a container for all resources.
                     *
                     * A Namespace is a top level entity within Temporal, and is used as a container for resources
                     * like workflow executions, task queues, etc. A Namespace acts as a sandbox and provides
                     * isolation for all resources within the namespace. All resources belongs to exactly one
                     * namespace.
                     * @param request RegisterNamespaceRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RegisterNamespaceResponse
                     */
                    public registerNamespace(request: temporal.api.workflowservice.v1.IRegisterNamespaceRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RegisterNamespaceCallback): void;

                    /**
                     * RegisterNamespace creates a new namespace which can be used as a container for all resources.
                     *
                     * A Namespace is a top level entity within Temporal, and is used as a container for resources
                     * like workflow executions, task queues, etc. A Namespace acts as a sandbox and provides
                     * isolation for all resources within the namespace. All resources belongs to exactly one
                     * namespace.
                     * @param request RegisterNamespaceRequest message or plain object
                     * @returns Promise
                     */
                    public registerNamespace(request: temporal.api.workflowservice.v1.IRegisterNamespaceRequest): Promise<temporal.api.workflowservice.v1.RegisterNamespaceResponse>;

                    /**
                     * DescribeNamespace returns the information and configuration for a registered namespace.
                     * @param request DescribeNamespaceRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DescribeNamespaceResponse
                     */
                    public describeNamespace(request: temporal.api.workflowservice.v1.IDescribeNamespaceRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DescribeNamespaceCallback): void;

                    /**
                     * DescribeNamespace returns the information and configuration for a registered namespace.
                     * @param request DescribeNamespaceRequest message or plain object
                     * @returns Promise
                     */
                    public describeNamespace(request: temporal.api.workflowservice.v1.IDescribeNamespaceRequest): Promise<temporal.api.workflowservice.v1.DescribeNamespaceResponse>;

                    /**
                     * ListNamespaces returns the information and configuration for all namespaces.
                     * @param request ListNamespacesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListNamespacesResponse
                     */
                    public listNamespaces(request: temporal.api.workflowservice.v1.IListNamespacesRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListNamespacesCallback): void;

                    /**
                     * ListNamespaces returns the information and configuration for all namespaces.
                     * @param request ListNamespacesRequest message or plain object
                     * @returns Promise
                     */
                    public listNamespaces(request: temporal.api.workflowservice.v1.IListNamespacesRequest): Promise<temporal.api.workflowservice.v1.ListNamespacesResponse>;

                    /**
                     * UpdateNamespace is used to update the information and configuration of a registered
                     * namespace.
                     * @param request UpdateNamespaceRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateNamespaceResponse
                     */
                    public updateNamespace(request: temporal.api.workflowservice.v1.IUpdateNamespaceRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UpdateNamespaceCallback): void;

                    /**
                     * UpdateNamespace is used to update the information and configuration of a registered
                     * namespace.
                     * @param request UpdateNamespaceRequest message or plain object
                     * @returns Promise
                     */
                    public updateNamespace(request: temporal.api.workflowservice.v1.IUpdateNamespaceRequest): Promise<temporal.api.workflowservice.v1.UpdateNamespaceResponse>;

                    /**
                     * DeprecateNamespace is used to update the state of a registered namespace to DEPRECATED.
                     *
                     * Once the namespace is deprecated it cannot be used to start new workflow executions. Existing
                     * workflow executions will continue to run on deprecated namespaces.
                     * Deprecated.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: Deprecated --)
                     * @param request DeprecateNamespaceRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DeprecateNamespaceResponse
                     */
                    public deprecateNamespace(request: temporal.api.workflowservice.v1.IDeprecateNamespaceRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DeprecateNamespaceCallback): void;

                    /**
                     * DeprecateNamespace is used to update the state of a registered namespace to DEPRECATED.
                     *
                     * Once the namespace is deprecated it cannot be used to start new workflow executions. Existing
                     * workflow executions will continue to run on deprecated namespaces.
                     * Deprecated.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: Deprecated --)
                     * @param request DeprecateNamespaceRequest message or plain object
                     * @returns Promise
                     */
                    public deprecateNamespace(request: temporal.api.workflowservice.v1.IDeprecateNamespaceRequest): Promise<temporal.api.workflowservice.v1.DeprecateNamespaceResponse>;

                    /**
                     * StartWorkflowExecution starts a new workflow execution.
                     *
                     * It will create the execution with a `WORKFLOW_EXECUTION_STARTED` event in its history and
                     * also schedule the first workflow task. Returns `WorkflowExecutionAlreadyStarted`, if an
                     * instance already exists with same workflow id.
                     * @param request StartWorkflowExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and StartWorkflowExecutionResponse
                     */
                    public startWorkflowExecution(request: temporal.api.workflowservice.v1.IStartWorkflowExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.StartWorkflowExecutionCallback): void;

                    /**
                     * StartWorkflowExecution starts a new workflow execution.
                     *
                     * It will create the execution with a `WORKFLOW_EXECUTION_STARTED` event in its history and
                     * also schedule the first workflow task. Returns `WorkflowExecutionAlreadyStarted`, if an
                     * instance already exists with same workflow id.
                     * @param request StartWorkflowExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public startWorkflowExecution(request: temporal.api.workflowservice.v1.IStartWorkflowExecutionRequest): Promise<temporal.api.workflowservice.v1.StartWorkflowExecutionResponse>;

                    /**
                     * ExecuteMultiOperation executes multiple operations within a single workflow.
                     *
                     * Operations are started atomically, meaning if *any* operation fails to be started, none are,
                     * and the request fails. Upon start, the API returns only when *all* operations have a response.
                     *
                     * Upon failure, it returns `MultiOperationExecutionFailure` where the status code
                     * equals the status code of the *first* operation that failed to be started.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: To be exposed over HTTP in the future. --)
                     * @param request ExecuteMultiOperationRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ExecuteMultiOperationResponse
                     */
                    public executeMultiOperation(request: temporal.api.workflowservice.v1.IExecuteMultiOperationRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ExecuteMultiOperationCallback): void;

                    /**
                     * ExecuteMultiOperation executes multiple operations within a single workflow.
                     *
                     * Operations are started atomically, meaning if *any* operation fails to be started, none are,
                     * and the request fails. Upon start, the API returns only when *all* operations have a response.
                     *
                     * Upon failure, it returns `MultiOperationExecutionFailure` where the status code
                     * equals the status code of the *first* operation that failed to be started.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: To be exposed over HTTP in the future. --)
                     * @param request ExecuteMultiOperationRequest message or plain object
                     * @returns Promise
                     */
                    public executeMultiOperation(request: temporal.api.workflowservice.v1.IExecuteMultiOperationRequest): Promise<temporal.api.workflowservice.v1.ExecuteMultiOperationResponse>;

                    /**
                     * GetWorkflowExecutionHistory returns the history of specified workflow execution. Fails with
                     * `NotFound` if the specified workflow execution is unknown to the service.
                     * @param request GetWorkflowExecutionHistoryRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetWorkflowExecutionHistoryResponse
                     */
                    public getWorkflowExecutionHistory(request: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryRequest, callback: temporal.api.workflowservice.v1.WorkflowService.GetWorkflowExecutionHistoryCallback): void;

                    /**
                     * GetWorkflowExecutionHistory returns the history of specified workflow execution. Fails with
                     * `NotFound` if the specified workflow execution is unknown to the service.
                     * @param request GetWorkflowExecutionHistoryRequest message or plain object
                     * @returns Promise
                     */
                    public getWorkflowExecutionHistory(request: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryRequest): Promise<temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse>;

                    /**
                     * GetWorkflowExecutionHistoryReverse returns the history of specified workflow execution in reverse
                     * order (starting from last event). Fails with`NotFound` if the specified workflow execution is
                     * unknown to the service.
                     * @param request GetWorkflowExecutionHistoryReverseRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetWorkflowExecutionHistoryReverseResponse
                     */
                    public getWorkflowExecutionHistoryReverse(request: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryReverseRequest, callback: temporal.api.workflowservice.v1.WorkflowService.GetWorkflowExecutionHistoryReverseCallback): void;

                    /**
                     * GetWorkflowExecutionHistoryReverse returns the history of specified workflow execution in reverse
                     * order (starting from last event). Fails with`NotFound` if the specified workflow execution is
                     * unknown to the service.
                     * @param request GetWorkflowExecutionHistoryReverseRequest message or plain object
                     * @returns Promise
                     */
                    public getWorkflowExecutionHistoryReverse(request: temporal.api.workflowservice.v1.IGetWorkflowExecutionHistoryReverseRequest): Promise<temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse>;

                    /**
                     * PollWorkflowTaskQueue is called by workers to make progress on workflows.
                     *
                     * A WorkflowTask is dispatched to callers for active workflow executions with pending workflow
                     * tasks. The worker is expected to call `RespondWorkflowTaskCompleted` when it is done
                     * processing the task. The service will create a `WorkflowTaskStarted` event in the history for
                     * this task before handing it to the worker.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request PollWorkflowTaskQueueRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and PollWorkflowTaskQueueResponse
                     */
                    public pollWorkflowTaskQueue(request: temporal.api.workflowservice.v1.IPollWorkflowTaskQueueRequest, callback: temporal.api.workflowservice.v1.WorkflowService.PollWorkflowTaskQueueCallback): void;

                    /**
                     * PollWorkflowTaskQueue is called by workers to make progress on workflows.
                     *
                     * A WorkflowTask is dispatched to callers for active workflow executions with pending workflow
                     * tasks. The worker is expected to call `RespondWorkflowTaskCompleted` when it is done
                     * processing the task. The service will create a `WorkflowTaskStarted` event in the history for
                     * this task before handing it to the worker.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request PollWorkflowTaskQueueRequest message or plain object
                     * @returns Promise
                     */
                    public pollWorkflowTaskQueue(request: temporal.api.workflowservice.v1.IPollWorkflowTaskQueueRequest): Promise<temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse>;

                    /**
                     * RespondWorkflowTaskCompleted is called by workers to successfully complete workflow tasks
                     * they received from `PollWorkflowTaskQueue`.
                     *
                     * Completing a WorkflowTask will write a `WORKFLOW_TASK_COMPLETED` event to the workflow's
                     * history, along with events corresponding to whatever commands the SDK generated while
                     * executing the task (ex timer started, activity task scheduled, etc).
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request RespondWorkflowTaskCompletedRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RespondWorkflowTaskCompletedResponse
                     */
                    public respondWorkflowTaskCompleted(request: temporal.api.workflowservice.v1.IRespondWorkflowTaskCompletedRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RespondWorkflowTaskCompletedCallback): void;

                    /**
                     * RespondWorkflowTaskCompleted is called by workers to successfully complete workflow tasks
                     * they received from `PollWorkflowTaskQueue`.
                     *
                     * Completing a WorkflowTask will write a `WORKFLOW_TASK_COMPLETED` event to the workflow's
                     * history, along with events corresponding to whatever commands the SDK generated while
                     * executing the task (ex timer started, activity task scheduled, etc).
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request RespondWorkflowTaskCompletedRequest message or plain object
                     * @returns Promise
                     */
                    public respondWorkflowTaskCompleted(request: temporal.api.workflowservice.v1.IRespondWorkflowTaskCompletedRequest): Promise<temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedResponse>;

                    /**
                     * RespondWorkflowTaskFailed is called by workers to indicate the processing of a workflow task
                     * failed.
                     *
                     * This results in a `WORKFLOW_TASK_FAILED` event written to the history, and a new workflow
                     * task will be scheduled. This API can be used to report unhandled failures resulting from
                     * applying the workflow task.
                     *
                     * Temporal will only append first WorkflowTaskFailed event to the history of workflow execution
                     * for consecutive failures.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request RespondWorkflowTaskFailedRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RespondWorkflowTaskFailedResponse
                     */
                    public respondWorkflowTaskFailed(request: temporal.api.workflowservice.v1.IRespondWorkflowTaskFailedRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RespondWorkflowTaskFailedCallback): void;

                    /**
                     * RespondWorkflowTaskFailed is called by workers to indicate the processing of a workflow task
                     * failed.
                     *
                     * This results in a `WORKFLOW_TASK_FAILED` event written to the history, and a new workflow
                     * task will be scheduled. This API can be used to report unhandled failures resulting from
                     * applying the workflow task.
                     *
                     * Temporal will only append first WorkflowTaskFailed event to the history of workflow execution
                     * for consecutive failures.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request RespondWorkflowTaskFailedRequest message or plain object
                     * @returns Promise
                     */
                    public respondWorkflowTaskFailed(request: temporal.api.workflowservice.v1.IRespondWorkflowTaskFailedRequest): Promise<temporal.api.workflowservice.v1.RespondWorkflowTaskFailedResponse>;

                    /**
                     * PollActivityTaskQueue is called by workers to process activity tasks from a specific task
                     * queue.
                     *
                     * The worker is expected to call one of the `RespondActivityTaskXXX` methods when it is done
                     * processing the task.
                     *
                     * An activity task is dispatched whenever a `SCHEDULE_ACTIVITY_TASK` command is produced during
                     * workflow execution. An in memory `ACTIVITY_TASK_STARTED` event is written to mutable state
                     * before the task is dispatched to the worker. The started event, and the final event
                     * (`ACTIVITY_TASK_COMPLETED` / `ACTIVITY_TASK_FAILED` / `ACTIVITY_TASK_TIMED_OUT`) will both be
                     * written permanently to Workflow execution history when Activity is finished. This is done to
                     * avoid writing many events in the case of a failure/retry loop.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request PollActivityTaskQueueRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and PollActivityTaskQueueResponse
                     */
                    public pollActivityTaskQueue(request: temporal.api.workflowservice.v1.IPollActivityTaskQueueRequest, callback: temporal.api.workflowservice.v1.WorkflowService.PollActivityTaskQueueCallback): void;

                    /**
                     * PollActivityTaskQueue is called by workers to process activity tasks from a specific task
                     * queue.
                     *
                     * The worker is expected to call one of the `RespondActivityTaskXXX` methods when it is done
                     * processing the task.
                     *
                     * An activity task is dispatched whenever a `SCHEDULE_ACTIVITY_TASK` command is produced during
                     * workflow execution. An in memory `ACTIVITY_TASK_STARTED` event is written to mutable state
                     * before the task is dispatched to the worker. The started event, and the final event
                     * (`ACTIVITY_TASK_COMPLETED` / `ACTIVITY_TASK_FAILED` / `ACTIVITY_TASK_TIMED_OUT`) will both be
                     * written permanently to Workflow execution history when Activity is finished. This is done to
                     * avoid writing many events in the case of a failure/retry loop.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request PollActivityTaskQueueRequest message or plain object
                     * @returns Promise
                     */
                    public pollActivityTaskQueue(request: temporal.api.workflowservice.v1.IPollActivityTaskQueueRequest): Promise<temporal.api.workflowservice.v1.PollActivityTaskQueueResponse>;

                    /**
                     * RecordActivityTaskHeartbeat is optionally called by workers while they execute activities.
                     *
                     * If a worker fails to heartbeat within the `heartbeat_timeout` interval for the activity task,
                     * then the current attempt times out. Depending on RetryPolicy, this may trigger a retry or
                     * time out the activity.
                     *
                     * For workflow activities, an `ACTIVITY_TASK_TIMED_OUT` event will be written to the workflow
                     * history. Calling `RecordActivityTaskHeartbeat` will fail with `NotFound` in such situations,
                     * in that event, the SDK should request cancellation of the activity.
                     *
                     * The request may contain response `details` which will be persisted by the server and may be
                     * used by the activity to checkpoint progress. The `cancel_requested` field in the response
                     * indicates whether cancellation has been requested for the activity.
                     * @param request RecordActivityTaskHeartbeatRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RecordActivityTaskHeartbeatResponse
                     */
                    public recordActivityTaskHeartbeat(request: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RecordActivityTaskHeartbeatCallback): void;

                    /**
                     * RecordActivityTaskHeartbeat is optionally called by workers while they execute activities.
                     *
                     * If a worker fails to heartbeat within the `heartbeat_timeout` interval for the activity task,
                     * then the current attempt times out. Depending on RetryPolicy, this may trigger a retry or
                     * time out the activity.
                     *
                     * For workflow activities, an `ACTIVITY_TASK_TIMED_OUT` event will be written to the workflow
                     * history. Calling `RecordActivityTaskHeartbeat` will fail with `NotFound` in such situations,
                     * in that event, the SDK should request cancellation of the activity.
                     *
                     * The request may contain response `details` which will be persisted by the server and may be
                     * used by the activity to checkpoint progress. The `cancel_requested` field in the response
                     * indicates whether cancellation has been requested for the activity.
                     * @param request RecordActivityTaskHeartbeatRequest message or plain object
                     * @returns Promise
                     */
                    public recordActivityTaskHeartbeat(request: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatRequest): Promise<temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatResponse>;

                    /**
                     * See `RecordActivityTaskHeartbeat`. This version allows clients to record heartbeats by
                     * namespace/workflow id/activity id instead of task token.
                     *
                     * (-- api-linter: core::0136::prepositions=disabled
                     * aip.dev/not-precedent: "By" is used to indicate request type. --)
                     * @param request RecordActivityTaskHeartbeatByIdRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RecordActivityTaskHeartbeatByIdResponse
                     */
                    public recordActivityTaskHeartbeatById(request: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatByIdRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RecordActivityTaskHeartbeatByIdCallback): void;

                    /**
                     * See `RecordActivityTaskHeartbeat`. This version allows clients to record heartbeats by
                     * namespace/workflow id/activity id instead of task token.
                     *
                     * (-- api-linter: core::0136::prepositions=disabled
                     * aip.dev/not-precedent: "By" is used to indicate request type. --)
                     * @param request RecordActivityTaskHeartbeatByIdRequest message or plain object
                     * @returns Promise
                     */
                    public recordActivityTaskHeartbeatById(request: temporal.api.workflowservice.v1.IRecordActivityTaskHeartbeatByIdRequest): Promise<temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdResponse>;

                    /**
                     * RespondActivityTaskCompleted is called by workers when they successfully complete an activity
                     * task.
                     *
                     * For workflow activities, this results in a new `ACTIVITY_TASK_COMPLETED` event being written to the workflow history
                     * and a new workflow task created for the workflow. Fails with `NotFound` if the task token is
                     * no longer valid due to activity timeout, already being completed, or never having existed.
                     * @param request RespondActivityTaskCompletedRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RespondActivityTaskCompletedResponse
                     */
                    public respondActivityTaskCompleted(request: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RespondActivityTaskCompletedCallback): void;

                    /**
                     * RespondActivityTaskCompleted is called by workers when they successfully complete an activity
                     * task.
                     *
                     * For workflow activities, this results in a new `ACTIVITY_TASK_COMPLETED` event being written to the workflow history
                     * and a new workflow task created for the workflow. Fails with `NotFound` if the task token is
                     * no longer valid due to activity timeout, already being completed, or never having existed.
                     * @param request RespondActivityTaskCompletedRequest message or plain object
                     * @returns Promise
                     */
                    public respondActivityTaskCompleted(request: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedRequest): Promise<temporal.api.workflowservice.v1.RespondActivityTaskCompletedResponse>;

                    /**
                     * See `RespondActivityTaskCompleted`. This version allows clients to record completions by
                     * namespace/workflow id/activity id instead of task token.
                     *
                     * (-- api-linter: core::0136::prepositions=disabled
                     * aip.dev/not-precedent: "By" is used to indicate request type. --)
                     * @param request RespondActivityTaskCompletedByIdRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RespondActivityTaskCompletedByIdResponse
                     */
                    public respondActivityTaskCompletedById(request: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedByIdRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RespondActivityTaskCompletedByIdCallback): void;

                    /**
                     * See `RespondActivityTaskCompleted`. This version allows clients to record completions by
                     * namespace/workflow id/activity id instead of task token.
                     *
                     * (-- api-linter: core::0136::prepositions=disabled
                     * aip.dev/not-precedent: "By" is used to indicate request type. --)
                     * @param request RespondActivityTaskCompletedByIdRequest message or plain object
                     * @returns Promise
                     */
                    public respondActivityTaskCompletedById(request: temporal.api.workflowservice.v1.IRespondActivityTaskCompletedByIdRequest): Promise<temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdResponse>;

                    /**
                     * RespondActivityTaskFailed is called by workers when processing an activity task fails.
                     *
                     * This results in a new `ACTIVITY_TASK_FAILED` event being written to the workflow history and
                     * a new workflow task created for the workflow. Fails with `NotFound` if the task token is no
                     * longer valid due to activity timeout, already being completed, or never having existed.
                     * @param request RespondActivityTaskFailedRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RespondActivityTaskFailedResponse
                     */
                    public respondActivityTaskFailed(request: temporal.api.workflowservice.v1.IRespondActivityTaskFailedRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RespondActivityTaskFailedCallback): void;

                    /**
                     * RespondActivityTaskFailed is called by workers when processing an activity task fails.
                     *
                     * This results in a new `ACTIVITY_TASK_FAILED` event being written to the workflow history and
                     * a new workflow task created for the workflow. Fails with `NotFound` if the task token is no
                     * longer valid due to activity timeout, already being completed, or never having existed.
                     * @param request RespondActivityTaskFailedRequest message or plain object
                     * @returns Promise
                     */
                    public respondActivityTaskFailed(request: temporal.api.workflowservice.v1.IRespondActivityTaskFailedRequest): Promise<temporal.api.workflowservice.v1.RespondActivityTaskFailedResponse>;

                    /**
                     * See `RecordActivityTaskFailed`. This version allows clients to record failures by
                     * namespace/workflow id/activity id instead of task token.
                     *
                     * (-- api-linter: core::0136::prepositions=disabled
                     * aip.dev/not-precedent: "By" is used to indicate request type. --)
                     * @param request RespondActivityTaskFailedByIdRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RespondActivityTaskFailedByIdResponse
                     */
                    public respondActivityTaskFailedById(request: temporal.api.workflowservice.v1.IRespondActivityTaskFailedByIdRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RespondActivityTaskFailedByIdCallback): void;

                    /**
                     * See `RecordActivityTaskFailed`. This version allows clients to record failures by
                     * namespace/workflow id/activity id instead of task token.
                     *
                     * (-- api-linter: core::0136::prepositions=disabled
                     * aip.dev/not-precedent: "By" is used to indicate request type. --)
                     * @param request RespondActivityTaskFailedByIdRequest message or plain object
                     * @returns Promise
                     */
                    public respondActivityTaskFailedById(request: temporal.api.workflowservice.v1.IRespondActivityTaskFailedByIdRequest): Promise<temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdResponse>;

                    /**
                     * RespondActivityTaskFailed is called by workers when processing an activity task fails.
                     *
                     * For workflow activities, this results in a new `ACTIVITY_TASK_CANCELED` event being written to the workflow history
                     * and a new workflow task created for the workflow. Fails with `NotFound` if the task token is
                     * no longer valid due to activity timeout, already being completed, or never having existed.
                     * @param request RespondActivityTaskCanceledRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RespondActivityTaskCanceledResponse
                     */
                    public respondActivityTaskCanceled(request: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RespondActivityTaskCanceledCallback): void;

                    /**
                     * RespondActivityTaskFailed is called by workers when processing an activity task fails.
                     *
                     * For workflow activities, this results in a new `ACTIVITY_TASK_CANCELED` event being written to the workflow history
                     * and a new workflow task created for the workflow. Fails with `NotFound` if the task token is
                     * no longer valid due to activity timeout, already being completed, or never having existed.
                     * @param request RespondActivityTaskCanceledRequest message or plain object
                     * @returns Promise
                     */
                    public respondActivityTaskCanceled(request: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledRequest): Promise<temporal.api.workflowservice.v1.RespondActivityTaskCanceledResponse>;

                    /**
                     * See `RespondActivityTaskCanceled`. This version allows clients to record failures by
                     * namespace/workflow id/activity id instead of task token.
                     *
                     * (-- api-linter: core::0136::prepositions=disabled
                     * aip.dev/not-precedent: "By" is used to indicate request type. --)
                     * @param request RespondActivityTaskCanceledByIdRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RespondActivityTaskCanceledByIdResponse
                     */
                    public respondActivityTaskCanceledById(request: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledByIdRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RespondActivityTaskCanceledByIdCallback): void;

                    /**
                     * See `RespondActivityTaskCanceled`. This version allows clients to record failures by
                     * namespace/workflow id/activity id instead of task token.
                     *
                     * (-- api-linter: core::0136::prepositions=disabled
                     * aip.dev/not-precedent: "By" is used to indicate request type. --)
                     * @param request RespondActivityTaskCanceledByIdRequest message or plain object
                     * @returns Promise
                     */
                    public respondActivityTaskCanceledById(request: temporal.api.workflowservice.v1.IRespondActivityTaskCanceledByIdRequest): Promise<temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdResponse>;

                    /**
                     * RequestCancelWorkflowExecution is called by workers when they want to request cancellation of
                     * a workflow execution.
                     *
                     * This results in a new `WORKFLOW_EXECUTION_CANCEL_REQUESTED` event being written to the
                     * workflow history and a new workflow task created for the workflow. It returns success if the requested
                     * workflow is already closed. It fails with 'NotFound' if the requested workflow doesn't exist.
                     * @param request RequestCancelWorkflowExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RequestCancelWorkflowExecutionResponse
                     */
                    public requestCancelWorkflowExecution(request: temporal.api.workflowservice.v1.IRequestCancelWorkflowExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RequestCancelWorkflowExecutionCallback): void;

                    /**
                     * RequestCancelWorkflowExecution is called by workers when they want to request cancellation of
                     * a workflow execution.
                     *
                     * This results in a new `WORKFLOW_EXECUTION_CANCEL_REQUESTED` event being written to the
                     * workflow history and a new workflow task created for the workflow. It returns success if the requested
                     * workflow is already closed. It fails with 'NotFound' if the requested workflow doesn't exist.
                     * @param request RequestCancelWorkflowExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public requestCancelWorkflowExecution(request: temporal.api.workflowservice.v1.IRequestCancelWorkflowExecutionRequest): Promise<temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionResponse>;

                    /**
                     * SignalWorkflowExecution is used to send a signal to a running workflow execution.
                     *
                     * This results in a `WORKFLOW_EXECUTION_SIGNALED` event recorded in the history and a workflow
                     * task being created for the execution.
                     * @param request SignalWorkflowExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SignalWorkflowExecutionResponse
                     */
                    public signalWorkflowExecution(request: temporal.api.workflowservice.v1.ISignalWorkflowExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.SignalWorkflowExecutionCallback): void;

                    /**
                     * SignalWorkflowExecution is used to send a signal to a running workflow execution.
                     *
                     * This results in a `WORKFLOW_EXECUTION_SIGNALED` event recorded in the history and a workflow
                     * task being created for the execution.
                     * @param request SignalWorkflowExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public signalWorkflowExecution(request: temporal.api.workflowservice.v1.ISignalWorkflowExecutionRequest): Promise<temporal.api.workflowservice.v1.SignalWorkflowExecutionResponse>;

                    /**
                     * SignalWithStartWorkflowExecution is used to ensure a signal is sent to a workflow, even if
                     * it isn't yet started.
                     *
                     * If the workflow is running, a `WORKFLOW_EXECUTION_SIGNALED` event is recorded in the history
                     * and a workflow task is generated.
                     *
                     * If the workflow is not running or not found, then the workflow is created with
                     * `WORKFLOW_EXECUTION_STARTED` and `WORKFLOW_EXECUTION_SIGNALED` events in its history, and a
                     * workflow task is generated.
                     *
                     * (-- api-linter: core::0136::prepositions=disabled
                     * aip.dev/not-precedent: "With" is used to indicate combined operation. --)
                     * @param request SignalWithStartWorkflowExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SignalWithStartWorkflowExecutionResponse
                     */
                    public signalWithStartWorkflowExecution(request: temporal.api.workflowservice.v1.ISignalWithStartWorkflowExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.SignalWithStartWorkflowExecutionCallback): void;

                    /**
                     * SignalWithStartWorkflowExecution is used to ensure a signal is sent to a workflow, even if
                     * it isn't yet started.
                     *
                     * If the workflow is running, a `WORKFLOW_EXECUTION_SIGNALED` event is recorded in the history
                     * and a workflow task is generated.
                     *
                     * If the workflow is not running or not found, then the workflow is created with
                     * `WORKFLOW_EXECUTION_STARTED` and `WORKFLOW_EXECUTION_SIGNALED` events in its history, and a
                     * workflow task is generated.
                     *
                     * (-- api-linter: core::0136::prepositions=disabled
                     * aip.dev/not-precedent: "With" is used to indicate combined operation. --)
                     * @param request SignalWithStartWorkflowExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public signalWithStartWorkflowExecution(request: temporal.api.workflowservice.v1.ISignalWithStartWorkflowExecutionRequest): Promise<temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionResponse>;

                    /**
                     * ResetWorkflowExecution will reset an existing workflow execution to a specified
                     * `WORKFLOW_TASK_COMPLETED` event (exclusive). It will immediately terminate the current
                     * execution instance. "Exclusive" means the identified completed event itself is not replayed
                     * in the reset history; the preceding `WORKFLOW_TASK_STARTED` event remains and will be marked as failed
                     * immediately, and a new workflow task will be scheduled to retry it.
                     * @param request ResetWorkflowExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ResetWorkflowExecutionResponse
                     */
                    public resetWorkflowExecution(request: temporal.api.workflowservice.v1.IResetWorkflowExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ResetWorkflowExecutionCallback): void;

                    /**
                     * ResetWorkflowExecution will reset an existing workflow execution to a specified
                     * `WORKFLOW_TASK_COMPLETED` event (exclusive). It will immediately terminate the current
                     * execution instance. "Exclusive" means the identified completed event itself is not replayed
                     * in the reset history; the preceding `WORKFLOW_TASK_STARTED` event remains and will be marked as failed
                     * immediately, and a new workflow task will be scheduled to retry it.
                     * @param request ResetWorkflowExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public resetWorkflowExecution(request: temporal.api.workflowservice.v1.IResetWorkflowExecutionRequest): Promise<temporal.api.workflowservice.v1.ResetWorkflowExecutionResponse>;

                    /**
                     * TerminateWorkflowExecution terminates an existing workflow execution by recording a
                     * `WORKFLOW_EXECUTION_TERMINATED` event in the history and immediately terminating the
                     * execution instance.
                     * @param request TerminateWorkflowExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and TerminateWorkflowExecutionResponse
                     */
                    public terminateWorkflowExecution(request: temporal.api.workflowservice.v1.ITerminateWorkflowExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.TerminateWorkflowExecutionCallback): void;

                    /**
                     * TerminateWorkflowExecution terminates an existing workflow execution by recording a
                     * `WORKFLOW_EXECUTION_TERMINATED` event in the history and immediately terminating the
                     * execution instance.
                     * @param request TerminateWorkflowExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public terminateWorkflowExecution(request: temporal.api.workflowservice.v1.ITerminateWorkflowExecutionRequest): Promise<temporal.api.workflowservice.v1.TerminateWorkflowExecutionResponse>;

                    /**
                     * DeleteWorkflowExecution asynchronously deletes a specific Workflow Execution (when
                     * WorkflowExecution.run_id is provided) or the latest Workflow Execution (when
                     * WorkflowExecution.run_id is not provided). If the Workflow Execution is Running, it will be
                     * terminated before deletion.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: Workflow deletion not exposed to HTTP, users should use cancel or terminate. --)
                     * @param request DeleteWorkflowExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DeleteWorkflowExecutionResponse
                     */
                    public deleteWorkflowExecution(request: temporal.api.workflowservice.v1.IDeleteWorkflowExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DeleteWorkflowExecutionCallback): void;

                    /**
                     * DeleteWorkflowExecution asynchronously deletes a specific Workflow Execution (when
                     * WorkflowExecution.run_id is provided) or the latest Workflow Execution (when
                     * WorkflowExecution.run_id is not provided). If the Workflow Execution is Running, it will be
                     * terminated before deletion.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: Workflow deletion not exposed to HTTP, users should use cancel or terminate. --)
                     * @param request DeleteWorkflowExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public deleteWorkflowExecution(request: temporal.api.workflowservice.v1.IDeleteWorkflowExecutionRequest): Promise<temporal.api.workflowservice.v1.DeleteWorkflowExecutionResponse>;

                    /**
                     * ListOpenWorkflowExecutions is a visibility API to list the open executions in a specific namespace.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: HTTP users should use ListWorkflowExecutions instead. --)
                     * @param request ListOpenWorkflowExecutionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListOpenWorkflowExecutionsResponse
                     */
                    public listOpenWorkflowExecutions(request: temporal.api.workflowservice.v1.IListOpenWorkflowExecutionsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListOpenWorkflowExecutionsCallback): void;

                    /**
                     * ListOpenWorkflowExecutions is a visibility API to list the open executions in a specific namespace.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: HTTP users should use ListWorkflowExecutions instead. --)
                     * @param request ListOpenWorkflowExecutionsRequest message or plain object
                     * @returns Promise
                     */
                    public listOpenWorkflowExecutions(request: temporal.api.workflowservice.v1.IListOpenWorkflowExecutionsRequest): Promise<temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsResponse>;

                    /**
                     * ListClosedWorkflowExecutions is a visibility API to list the closed executions in a specific namespace.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: HTTP users should use ListWorkflowExecutions instead. --)
                     * @param request ListClosedWorkflowExecutionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListClosedWorkflowExecutionsResponse
                     */
                    public listClosedWorkflowExecutions(request: temporal.api.workflowservice.v1.IListClosedWorkflowExecutionsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListClosedWorkflowExecutionsCallback): void;

                    /**
                     * ListClosedWorkflowExecutions is a visibility API to list the closed executions in a specific namespace.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: HTTP users should use ListWorkflowExecutions instead. --)
                     * @param request ListClosedWorkflowExecutionsRequest message or plain object
                     * @returns Promise
                     */
                    public listClosedWorkflowExecutions(request: temporal.api.workflowservice.v1.IListClosedWorkflowExecutionsRequest): Promise<temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsResponse>;

                    /**
                     * ListWorkflowExecutions is a visibility API to list workflow executions in a specific namespace.
                     * @param request ListWorkflowExecutionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListWorkflowExecutionsResponse
                     */
                    public listWorkflowExecutions(request: temporal.api.workflowservice.v1.IListWorkflowExecutionsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListWorkflowExecutionsCallback): void;

                    /**
                     * ListWorkflowExecutions is a visibility API to list workflow executions in a specific namespace.
                     * @param request ListWorkflowExecutionsRequest message or plain object
                     * @returns Promise
                     */
                    public listWorkflowExecutions(request: temporal.api.workflowservice.v1.IListWorkflowExecutionsRequest): Promise<temporal.api.workflowservice.v1.ListWorkflowExecutionsResponse>;

                    /**
                     * ListArchivedWorkflowExecutions is a visibility API to list archived workflow executions in a specific namespace.
                     * @param request ListArchivedWorkflowExecutionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListArchivedWorkflowExecutionsResponse
                     */
                    public listArchivedWorkflowExecutions(request: temporal.api.workflowservice.v1.IListArchivedWorkflowExecutionsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListArchivedWorkflowExecutionsCallback): void;

                    /**
                     * ListArchivedWorkflowExecutions is a visibility API to list archived workflow executions in a specific namespace.
                     * @param request ListArchivedWorkflowExecutionsRequest message or plain object
                     * @returns Promise
                     */
                    public listArchivedWorkflowExecutions(request: temporal.api.workflowservice.v1.IListArchivedWorkflowExecutionsRequest): Promise<temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsResponse>;

                    /**
                     * ScanWorkflowExecutions _was_ a visibility API to list large amount of workflow executions in a specific namespace without order.
                     * It has since been deprecated in favor of `ListWorkflowExecutions` and rewritten to use `ListWorkflowExecutions` internally.
                     *
                     * Deprecated: Replaced with `ListWorkflowExecutions`.
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: HTTP users should use ListWorkflowExecutions instead. --)
                     * @param request ScanWorkflowExecutionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ScanWorkflowExecutionsResponse
                     */
                    public scanWorkflowExecutions(request: temporal.api.workflowservice.v1.IScanWorkflowExecutionsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ScanWorkflowExecutionsCallback): void;

                    /**
                     * ScanWorkflowExecutions _was_ a visibility API to list large amount of workflow executions in a specific namespace without order.
                     * It has since been deprecated in favor of `ListWorkflowExecutions` and rewritten to use `ListWorkflowExecutions` internally.
                     *
                     * Deprecated: Replaced with `ListWorkflowExecutions`.
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: HTTP users should use ListWorkflowExecutions instead. --)
                     * @param request ScanWorkflowExecutionsRequest message or plain object
                     * @returns Promise
                     */
                    public scanWorkflowExecutions(request: temporal.api.workflowservice.v1.IScanWorkflowExecutionsRequest): Promise<temporal.api.workflowservice.v1.ScanWorkflowExecutionsResponse>;

                    /**
                     * CountWorkflowExecutions is a visibility API to count of workflow executions in a specific namespace.
                     * @param request CountWorkflowExecutionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CountWorkflowExecutionsResponse
                     */
                    public countWorkflowExecutions(request: temporal.api.workflowservice.v1.ICountWorkflowExecutionsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.CountWorkflowExecutionsCallback): void;

                    /**
                     * CountWorkflowExecutions is a visibility API to count of workflow executions in a specific namespace.
                     * @param request CountWorkflowExecutionsRequest message or plain object
                     * @returns Promise
                     */
                    public countWorkflowExecutions(request: temporal.api.workflowservice.v1.ICountWorkflowExecutionsRequest): Promise<temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse>;

                    /**
                     * GetSearchAttributes is a visibility API to get all legal keys that could be used in list APIs
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose this search attribute API to HTTP (but may expose on OperatorService). --)
                     * @param request GetSearchAttributesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetSearchAttributesResponse
                     */
                    public getSearchAttributes(request: temporal.api.workflowservice.v1.IGetSearchAttributesRequest, callback: temporal.api.workflowservice.v1.WorkflowService.GetSearchAttributesCallback): void;

                    /**
                     * GetSearchAttributes is a visibility API to get all legal keys that could be used in list APIs
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose this search attribute API to HTTP (but may expose on OperatorService). --)
                     * @param request GetSearchAttributesRequest message or plain object
                     * @returns Promise
                     */
                    public getSearchAttributes(request: temporal.api.workflowservice.v1.IGetSearchAttributesRequest): Promise<temporal.api.workflowservice.v1.GetSearchAttributesResponse>;

                    /**
                     * RespondQueryTaskCompleted is called by workers to complete queries which were delivered on
                     * the `query` (not `queries`) field of a `PollWorkflowTaskQueueResponse`.
                     *
                     * Completing the query will unblock the corresponding client call to `QueryWorkflow` and return
                     * the query result a response.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request RespondQueryTaskCompletedRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RespondQueryTaskCompletedResponse
                     */
                    public respondQueryTaskCompleted(request: temporal.api.workflowservice.v1.IRespondQueryTaskCompletedRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RespondQueryTaskCompletedCallback): void;

                    /**
                     * RespondQueryTaskCompleted is called by workers to complete queries which were delivered on
                     * the `query` (not `queries`) field of a `PollWorkflowTaskQueueResponse`.
                     *
                     * Completing the query will unblock the corresponding client call to `QueryWorkflow` and return
                     * the query result a response.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request RespondQueryTaskCompletedRequest message or plain object
                     * @returns Promise
                     */
                    public respondQueryTaskCompleted(request: temporal.api.workflowservice.v1.IRespondQueryTaskCompletedRequest): Promise<temporal.api.workflowservice.v1.RespondQueryTaskCompletedResponse>;

                    /**
                     * ResetStickyTaskQueue resets the sticky task queue related information in the mutable state of
                     * a given workflow. This is prudent for workers to perform if a workflow has been paged out of
                     * their cache.
                     *
                     * Things cleared are:
                     * 1. StickyTaskQueue
                     * 2. StickyScheduleToStartTimeout
                     *
                     * When possible, ShutdownWorker should be preferred over
                     * ResetStickyTaskQueue (particularly when a worker is shutting down or
                     * cycling).
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request ResetStickyTaskQueueRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ResetStickyTaskQueueResponse
                     */
                    public resetStickyTaskQueue(request: temporal.api.workflowservice.v1.IResetStickyTaskQueueRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ResetStickyTaskQueueCallback): void;

                    /**
                     * ResetStickyTaskQueue resets the sticky task queue related information in the mutable state of
                     * a given workflow. This is prudent for workers to perform if a workflow has been paged out of
                     * their cache.
                     *
                     * Things cleared are:
                     * 1. StickyTaskQueue
                     * 2. StickyScheduleToStartTimeout
                     *
                     * When possible, ShutdownWorker should be preferred over
                     * ResetStickyTaskQueue (particularly when a worker is shutting down or
                     * cycling).
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request ResetStickyTaskQueueRequest message or plain object
                     * @returns Promise
                     */
                    public resetStickyTaskQueue(request: temporal.api.workflowservice.v1.IResetStickyTaskQueueRequest): Promise<temporal.api.workflowservice.v1.ResetStickyTaskQueueResponse>;

                    /**
                     * ShutdownWorker is used to indicate that the given sticky task
                     * queue is no longer being polled by its worker. Following the completion of
                     * ShutdownWorker, newly-added workflow tasks will instead be placed
                     * in the normal task queue, eligible for any worker to pick up.
                     *
                     * ShutdownWorker should be called by workers while shutting down,
                     * after they've shut down their pollers. If another sticky poll
                     * request is issued, the sticky task queue will be revived.
                     *
                     * As of Temporal Server v1.25.0, ShutdownWorker hasn't yet been implemented.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request ShutdownWorkerRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ShutdownWorkerResponse
                     */
                    public shutdownWorker(request: temporal.api.workflowservice.v1.IShutdownWorkerRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ShutdownWorkerCallback): void;

                    /**
                     * ShutdownWorker is used to indicate that the given sticky task
                     * queue is no longer being polled by its worker. Following the completion of
                     * ShutdownWorker, newly-added workflow tasks will instead be placed
                     * in the normal task queue, eligible for any worker to pick up.
                     *
                     * ShutdownWorker should be called by workers while shutting down,
                     * after they've shut down their pollers. If another sticky poll
                     * request is issued, the sticky task queue will be revived.
                     *
                     * As of Temporal Server v1.25.0, ShutdownWorker hasn't yet been implemented.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request ShutdownWorkerRequest message or plain object
                     * @returns Promise
                     */
                    public shutdownWorker(request: temporal.api.workflowservice.v1.IShutdownWorkerRequest): Promise<temporal.api.workflowservice.v1.ShutdownWorkerResponse>;

                    /**
                     * QueryWorkflow requests a query be executed for a specified workflow execution.
                     * @param request QueryWorkflowRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and QueryWorkflowResponse
                     */
                    public queryWorkflow(request: temporal.api.workflowservice.v1.IQueryWorkflowRequest, callback: temporal.api.workflowservice.v1.WorkflowService.QueryWorkflowCallback): void;

                    /**
                     * QueryWorkflow requests a query be executed for a specified workflow execution.
                     * @param request QueryWorkflowRequest message or plain object
                     * @returns Promise
                     */
                    public queryWorkflow(request: temporal.api.workflowservice.v1.IQueryWorkflowRequest): Promise<temporal.api.workflowservice.v1.QueryWorkflowResponse>;

                    /**
                     * DescribeWorkflowExecution returns information about the specified workflow execution.
                     * @param request DescribeWorkflowExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DescribeWorkflowExecutionResponse
                     */
                    public describeWorkflowExecution(request: temporal.api.workflowservice.v1.IDescribeWorkflowExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DescribeWorkflowExecutionCallback): void;

                    /**
                     * DescribeWorkflowExecution returns information about the specified workflow execution.
                     * @param request DescribeWorkflowExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public describeWorkflowExecution(request: temporal.api.workflowservice.v1.IDescribeWorkflowExecutionRequest): Promise<temporal.api.workflowservice.v1.DescribeWorkflowExecutionResponse>;

                    /**
                     * DescribeTaskQueue returns the following information about the target task queue, broken down by Build ID:
                     * - List of pollers
                     * - Workflow Reachability status
                     * - Backlog info for Workflow and/or Activity tasks
                     * @param request DescribeTaskQueueRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DescribeTaskQueueResponse
                     */
                    public describeTaskQueue(request: temporal.api.workflowservice.v1.IDescribeTaskQueueRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DescribeTaskQueueCallback): void;

                    /**
                     * DescribeTaskQueue returns the following information about the target task queue, broken down by Build ID:
                     * - List of pollers
                     * - Workflow Reachability status
                     * - Backlog info for Workflow and/or Activity tasks
                     * @param request DescribeTaskQueueRequest message or plain object
                     * @returns Promise
                     */
                    public describeTaskQueue(request: temporal.api.workflowservice.v1.IDescribeTaskQueueRequest): Promise<temporal.api.workflowservice.v1.DescribeTaskQueueResponse>;

                    /**
                     * GetClusterInfo returns information about temporal cluster
                     * @param request GetClusterInfoRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetClusterInfoResponse
                     */
                    public getClusterInfo(request: temporal.api.workflowservice.v1.IGetClusterInfoRequest, callback: temporal.api.workflowservice.v1.WorkflowService.GetClusterInfoCallback): void;

                    /**
                     * GetClusterInfo returns information about temporal cluster
                     * @param request GetClusterInfoRequest message or plain object
                     * @returns Promise
                     */
                    public getClusterInfo(request: temporal.api.workflowservice.v1.IGetClusterInfoRequest): Promise<temporal.api.workflowservice.v1.GetClusterInfoResponse>;

                    /**
                     * GetSystemInfo returns information about the system.
                     * @param request GetSystemInfoRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetSystemInfoResponse
                     */
                    public getSystemInfo(request: temporal.api.workflowservice.v1.IGetSystemInfoRequest, callback: temporal.api.workflowservice.v1.WorkflowService.GetSystemInfoCallback): void;

                    /**
                     * GetSystemInfo returns information about the system.
                     * @param request GetSystemInfoRequest message or plain object
                     * @returns Promise
                     */
                    public getSystemInfo(request: temporal.api.workflowservice.v1.IGetSystemInfoRequest): Promise<temporal.api.workflowservice.v1.GetSystemInfoResponse>;

                    /**
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose this low-level API to HTTP. --)
                     * @param request ListTaskQueuePartitionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListTaskQueuePartitionsResponse
                     */
                    public listTaskQueuePartitions(request: temporal.api.workflowservice.v1.IListTaskQueuePartitionsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListTaskQueuePartitionsCallback): void;

                    /**
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose this low-level API to HTTP. --)
                     * @param request ListTaskQueuePartitionsRequest message or plain object
                     * @returns Promise
                     */
                    public listTaskQueuePartitions(request: temporal.api.workflowservice.v1.IListTaskQueuePartitionsRequest): Promise<temporal.api.workflowservice.v1.ListTaskQueuePartitionsResponse>;

                    /**
                     * Creates a new schedule.
                     * @param request CreateScheduleRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CreateScheduleResponse
                     */
                    public createSchedule(request: temporal.api.workflowservice.v1.ICreateScheduleRequest, callback: temporal.api.workflowservice.v1.WorkflowService.CreateScheduleCallback): void;

                    /**
                     * Creates a new schedule.
                     * @param request CreateScheduleRequest message or plain object
                     * @returns Promise
                     */
                    public createSchedule(request: temporal.api.workflowservice.v1.ICreateScheduleRequest): Promise<temporal.api.workflowservice.v1.CreateScheduleResponse>;

                    /**
                     * Returns the schedule description and current state of an existing schedule.
                     * @param request DescribeScheduleRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DescribeScheduleResponse
                     */
                    public describeSchedule(request: temporal.api.workflowservice.v1.IDescribeScheduleRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DescribeScheduleCallback): void;

                    /**
                     * Returns the schedule description and current state of an existing schedule.
                     * @param request DescribeScheduleRequest message or plain object
                     * @returns Promise
                     */
                    public describeSchedule(request: temporal.api.workflowservice.v1.IDescribeScheduleRequest): Promise<temporal.api.workflowservice.v1.DescribeScheduleResponse>;

                    /**
                     * Changes the configuration or state of an existing schedule.
                     * @param request UpdateScheduleRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateScheduleResponse
                     */
                    public updateSchedule(request: temporal.api.workflowservice.v1.IUpdateScheduleRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UpdateScheduleCallback): void;

                    /**
                     * Changes the configuration or state of an existing schedule.
                     * @param request UpdateScheduleRequest message or plain object
                     * @returns Promise
                     */
                    public updateSchedule(request: temporal.api.workflowservice.v1.IUpdateScheduleRequest): Promise<temporal.api.workflowservice.v1.UpdateScheduleResponse>;

                    /**
                     * Makes a specific change to a schedule or triggers an immediate action.
                     * @param request PatchScheduleRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and PatchScheduleResponse
                     */
                    public patchSchedule(request: temporal.api.workflowservice.v1.IPatchScheduleRequest, callback: temporal.api.workflowservice.v1.WorkflowService.PatchScheduleCallback): void;

                    /**
                     * Makes a specific change to a schedule or triggers an immediate action.
                     * @param request PatchScheduleRequest message or plain object
                     * @returns Promise
                     */
                    public patchSchedule(request: temporal.api.workflowservice.v1.IPatchScheduleRequest): Promise<temporal.api.workflowservice.v1.PatchScheduleResponse>;

                    /**
                     * Lists matching times within a range.
                     * @param request ListScheduleMatchingTimesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListScheduleMatchingTimesResponse
                     */
                    public listScheduleMatchingTimes(request: temporal.api.workflowservice.v1.IListScheduleMatchingTimesRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListScheduleMatchingTimesCallback): void;

                    /**
                     * Lists matching times within a range.
                     * @param request ListScheduleMatchingTimesRequest message or plain object
                     * @returns Promise
                     */
                    public listScheduleMatchingTimes(request: temporal.api.workflowservice.v1.IListScheduleMatchingTimesRequest): Promise<temporal.api.workflowservice.v1.ListScheduleMatchingTimesResponse>;

                    /**
                     * Deletes a schedule, removing it from the system.
                     * @param request DeleteScheduleRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DeleteScheduleResponse
                     */
                    public deleteSchedule(request: temporal.api.workflowservice.v1.IDeleteScheduleRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DeleteScheduleCallback): void;

                    /**
                     * Deletes a schedule, removing it from the system.
                     * @param request DeleteScheduleRequest message or plain object
                     * @returns Promise
                     */
                    public deleteSchedule(request: temporal.api.workflowservice.v1.IDeleteScheduleRequest): Promise<temporal.api.workflowservice.v1.DeleteScheduleResponse>;

                    /**
                     * List all schedules in a namespace.
                     * @param request ListSchedulesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListSchedulesResponse
                     */
                    public listSchedules(request: temporal.api.workflowservice.v1.IListSchedulesRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListSchedulesCallback): void;

                    /**
                     * List all schedules in a namespace.
                     * @param request ListSchedulesRequest message or plain object
                     * @returns Promise
                     */
                    public listSchedules(request: temporal.api.workflowservice.v1.IListSchedulesRequest): Promise<temporal.api.workflowservice.v1.ListSchedulesResponse>;

                    /**
                     * CountSchedules is a visibility API to count schedules in a specific namespace.
                     * @param request CountSchedulesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CountSchedulesResponse
                     */
                    public countSchedules(request: temporal.api.workflowservice.v1.ICountSchedulesRequest, callback: temporal.api.workflowservice.v1.WorkflowService.CountSchedulesCallback): void;

                    /**
                     * CountSchedules is a visibility API to count schedules in a specific namespace.
                     * @param request CountSchedulesRequest message or plain object
                     * @returns Promise
                     */
                    public countSchedules(request: temporal.api.workflowservice.v1.ICountSchedulesRequest): Promise<temporal.api.workflowservice.v1.CountSchedulesResponse>;

                    /**
                     * Deprecated. Use `UpdateWorkerVersioningRules`.
                     *
                     * Allows users to specify sets of worker build id versions on a per task queue basis. Versions
                     * are ordered, and may be either compatible with some extant version, or a new incompatible
                     * version, forming sets of ids which are incompatible with each other, but whose contained
                     * members are compatible with one another.
                     *
                     * A single build id may be mapped to multiple task queues using this API for cases where a single process hosts
                     * multiple workers.
                     *
                     * To query which workers can be retired, use the `GetWorkerTaskReachability` API.
                     *
                     * NOTE: The number of task queues mapped to a single build id is limited by the `limit.taskQueuesPerBuildId`
                     * (default is 20), if this limit is exceeded this API will error with a FailedPrecondition.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do yet expose versioning API to HTTP. --)
                     * @param request UpdateWorkerBuildIdCompatibilityRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateWorkerBuildIdCompatibilityResponse
                     */
                    public updateWorkerBuildIdCompatibility(request: temporal.api.workflowservice.v1.IUpdateWorkerBuildIdCompatibilityRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UpdateWorkerBuildIdCompatibilityCallback): void;

                    /**
                     * Deprecated. Use `UpdateWorkerVersioningRules`.
                     *
                     * Allows users to specify sets of worker build id versions on a per task queue basis. Versions
                     * are ordered, and may be either compatible with some extant version, or a new incompatible
                     * version, forming sets of ids which are incompatible with each other, but whose contained
                     * members are compatible with one another.
                     *
                     * A single build id may be mapped to multiple task queues using this API for cases where a single process hosts
                     * multiple workers.
                     *
                     * To query which workers can be retired, use the `GetWorkerTaskReachability` API.
                     *
                     * NOTE: The number of task queues mapped to a single build id is limited by the `limit.taskQueuesPerBuildId`
                     * (default is 20), if this limit is exceeded this API will error with a FailedPrecondition.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do yet expose versioning API to HTTP. --)
                     * @param request UpdateWorkerBuildIdCompatibilityRequest message or plain object
                     * @returns Promise
                     */
                    public updateWorkerBuildIdCompatibility(request: temporal.api.workflowservice.v1.IUpdateWorkerBuildIdCompatibilityRequest): Promise<temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityResponse>;

                    /**
                     * Deprecated. Use `GetWorkerVersioningRules`.
                     * Fetches the worker build id versioning sets for a task queue.
                     * @param request GetWorkerBuildIdCompatibilityRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetWorkerBuildIdCompatibilityResponse
                     */
                    public getWorkerBuildIdCompatibility(request: temporal.api.workflowservice.v1.IGetWorkerBuildIdCompatibilityRequest, callback: temporal.api.workflowservice.v1.WorkflowService.GetWorkerBuildIdCompatibilityCallback): void;

                    /**
                     * Deprecated. Use `GetWorkerVersioningRules`.
                     * Fetches the worker build id versioning sets for a task queue.
                     * @param request GetWorkerBuildIdCompatibilityRequest message or plain object
                     * @returns Promise
                     */
                    public getWorkerBuildIdCompatibility(request: temporal.api.workflowservice.v1.IGetWorkerBuildIdCompatibilityRequest): Promise<temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse>;

                    /**
                     * Use this API to manage Worker Versioning Rules for a given Task Queue. There are two types of
                     * rules: Build ID Assignment rules and Compatible Build ID Redirect rules.
                     *
                     * Assignment rules determine how to assign new executions to a Build IDs. Their primary
                     * use case is to specify the latest Build ID but they have powerful features for gradual rollout
                     * of a new Build ID.
                     *
                     * Once a workflow execution is assigned to a Build ID and it completes its first Workflow Task,
                     * the workflow stays on the assigned Build ID regardless of changes in assignment rules. This
                     * eliminates the need for compatibility between versions when you only care about using the new
                     * version for new workflows and let existing workflows finish in their own version.
                     *
                     * Activities, Child Workflows and Continue-as-New executions have the option to inherit the
                     * Build ID of their parent/previous workflow or use the latest assignment rules to independently
                     * select a Build ID.
                     *
                     * Redirect rules should only be used when you want to move workflows and activities assigned to
                     * one Build ID (source) to another compatible Build ID (target). You are responsible to make sure
                     * the target Build ID of a redirect rule is able to process event histories made by the source
                     * Build ID by using [Patching](https://docs.temporal.io/workflows#patching) or other means.
                     *
                     * WARNING: Worker Versioning is not yet stable and the API and behavior may change incompatibly.
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do yet expose versioning API to HTTP. --)
                     * @param request UpdateWorkerVersioningRulesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateWorkerVersioningRulesResponse
                     */
                    public updateWorkerVersioningRules(request: temporal.api.workflowservice.v1.IUpdateWorkerVersioningRulesRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UpdateWorkerVersioningRulesCallback): void;

                    /**
                     * Use this API to manage Worker Versioning Rules for a given Task Queue. There are two types of
                     * rules: Build ID Assignment rules and Compatible Build ID Redirect rules.
                     *
                     * Assignment rules determine how to assign new executions to a Build IDs. Their primary
                     * use case is to specify the latest Build ID but they have powerful features for gradual rollout
                     * of a new Build ID.
                     *
                     * Once a workflow execution is assigned to a Build ID and it completes its first Workflow Task,
                     * the workflow stays on the assigned Build ID regardless of changes in assignment rules. This
                     * eliminates the need for compatibility between versions when you only care about using the new
                     * version for new workflows and let existing workflows finish in their own version.
                     *
                     * Activities, Child Workflows and Continue-as-New executions have the option to inherit the
                     * Build ID of their parent/previous workflow or use the latest assignment rules to independently
                     * select a Build ID.
                     *
                     * Redirect rules should only be used when you want to move workflows and activities assigned to
                     * one Build ID (source) to another compatible Build ID (target). You are responsible to make sure
                     * the target Build ID of a redirect rule is able to process event histories made by the source
                     * Build ID by using [Patching](https://docs.temporal.io/workflows#patching) or other means.
                     *
                     * WARNING: Worker Versioning is not yet stable and the API and behavior may change incompatibly.
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do yet expose versioning API to HTTP. --)
                     * @param request UpdateWorkerVersioningRulesRequest message or plain object
                     * @returns Promise
                     */
                    public updateWorkerVersioningRules(request: temporal.api.workflowservice.v1.IUpdateWorkerVersioningRulesRequest): Promise<temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse>;

                    /**
                     * Fetches the Build ID assignment and redirect rules for a Task Queue.
                     * WARNING: Worker Versioning is not yet stable and the API and behavior may change incompatibly.
                     * @param request GetWorkerVersioningRulesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetWorkerVersioningRulesResponse
                     */
                    public getWorkerVersioningRules(request: temporal.api.workflowservice.v1.IGetWorkerVersioningRulesRequest, callback: temporal.api.workflowservice.v1.WorkflowService.GetWorkerVersioningRulesCallback): void;

                    /**
                     * Fetches the Build ID assignment and redirect rules for a Task Queue.
                     * WARNING: Worker Versioning is not yet stable and the API and behavior may change incompatibly.
                     * @param request GetWorkerVersioningRulesRequest message or plain object
                     * @returns Promise
                     */
                    public getWorkerVersioningRules(request: temporal.api.workflowservice.v1.IGetWorkerVersioningRulesRequest): Promise<temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse>;

                    /**
                     * Deprecated. Use `DescribeTaskQueue`.
                     *
                     * Fetches task reachability to determine whether a worker may be retired.
                     * The request may specify task queues to query for or let the server fetch all task queues mapped to the given
                     * build IDs.
                     *
                     * When requesting a large number of task queues or all task queues associated with the given build ids in a
                     * namespace, all task queues will be listed in the response but some of them may not contain reachability
                     * information due to a server enforced limit. When reaching the limit, task queues that reachability information
                     * could not be retrieved for will be marked with a single TASK_REACHABILITY_UNSPECIFIED entry. The caller may issue
                     * another call to get the reachability for those task queues.
                     *
                     * Open source users can adjust this limit by setting the server's dynamic config value for
                     * `limit.reachabilityTaskQueueScan` with the caveat that this call can strain the visibility store.
                     * @param request GetWorkerTaskReachabilityRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetWorkerTaskReachabilityResponse
                     */
                    public getWorkerTaskReachability(request: temporal.api.workflowservice.v1.IGetWorkerTaskReachabilityRequest, callback: temporal.api.workflowservice.v1.WorkflowService.GetWorkerTaskReachabilityCallback): void;

                    /**
                     * Deprecated. Use `DescribeTaskQueue`.
                     *
                     * Fetches task reachability to determine whether a worker may be retired.
                     * The request may specify task queues to query for or let the server fetch all task queues mapped to the given
                     * build IDs.
                     *
                     * When requesting a large number of task queues or all task queues associated with the given build ids in a
                     * namespace, all task queues will be listed in the response but some of them may not contain reachability
                     * information due to a server enforced limit. When reaching the limit, task queues that reachability information
                     * could not be retrieved for will be marked with a single TASK_REACHABILITY_UNSPECIFIED entry. The caller may issue
                     * another call to get the reachability for those task queues.
                     *
                     * Open source users can adjust this limit by setting the server's dynamic config value for
                     * `limit.reachabilityTaskQueueScan` with the caveat that this call can strain the visibility store.
                     * @param request GetWorkerTaskReachabilityRequest message or plain object
                     * @returns Promise
                     */
                    public getWorkerTaskReachability(request: temporal.api.workflowservice.v1.IGetWorkerTaskReachabilityRequest): Promise<temporal.api.workflowservice.v1.GetWorkerTaskReachabilityResponse>;

                    /**
                     * Describes a worker deployment.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * Deprecated. Replaced with `DescribeWorkerDeploymentVersion`.
                     * @param request DescribeDeploymentRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DescribeDeploymentResponse
                     */
                    public describeDeployment(request: temporal.api.workflowservice.v1.IDescribeDeploymentRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DescribeDeploymentCallback): void;

                    /**
                     * Describes a worker deployment.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * Deprecated. Replaced with `DescribeWorkerDeploymentVersion`.
                     * @param request DescribeDeploymentRequest message or plain object
                     * @returns Promise
                     */
                    public describeDeployment(request: temporal.api.workflowservice.v1.IDescribeDeploymentRequest): Promise<temporal.api.workflowservice.v1.DescribeDeploymentResponse>;

                    /**
                     * Describes a worker deployment version.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request DescribeWorkerDeploymentVersionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DescribeWorkerDeploymentVersionResponse
                     */
                    public describeWorkerDeploymentVersion(request: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentVersionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DescribeWorkerDeploymentVersionCallback): void;

                    /**
                     * Describes a worker deployment version.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request DescribeWorkerDeploymentVersionRequest message or plain object
                     * @returns Promise
                     */
                    public describeWorkerDeploymentVersion(request: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentVersionRequest): Promise<temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse>;

                    /**
                     * Lists worker deployments in the namespace. Optionally can filter based on deployment series
                     * name.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * Deprecated. Replaced with `ListWorkerDeployments`.
                     * @param request ListDeploymentsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListDeploymentsResponse
                     */
                    public listDeployments(request: temporal.api.workflowservice.v1.IListDeploymentsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListDeploymentsCallback): void;

                    /**
                     * Lists worker deployments in the namespace. Optionally can filter based on deployment series
                     * name.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * Deprecated. Replaced with `ListWorkerDeployments`.
                     * @param request ListDeploymentsRequest message or plain object
                     * @returns Promise
                     */
                    public listDeployments(request: temporal.api.workflowservice.v1.IListDeploymentsRequest): Promise<temporal.api.workflowservice.v1.ListDeploymentsResponse>;

                    /**
                     * Returns the reachability level of a worker deployment to help users decide when it is time
                     * to decommission a deployment. Reachability level is calculated based on the deployment's
                     * `status` and existing workflows that depend on the given deployment for their execution.
                     * Calculating reachability is relatively expensive. Therefore, server might return a recently
                     * cached value. In such a case, the `last_update_time` will inform you about the actual
                     * reachability calculation time.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * Deprecated. Replaced with `DrainageInfo` returned by `DescribeWorkerDeploymentVersion`.
                     * @param request GetDeploymentReachabilityRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetDeploymentReachabilityResponse
                     */
                    public getDeploymentReachability(request: temporal.api.workflowservice.v1.IGetDeploymentReachabilityRequest, callback: temporal.api.workflowservice.v1.WorkflowService.GetDeploymentReachabilityCallback): void;

                    /**
                     * Returns the reachability level of a worker deployment to help users decide when it is time
                     * to decommission a deployment. Reachability level is calculated based on the deployment's
                     * `status` and existing workflows that depend on the given deployment for their execution.
                     * Calculating reachability is relatively expensive. Therefore, server might return a recently
                     * cached value. In such a case, the `last_update_time` will inform you about the actual
                     * reachability calculation time.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * Deprecated. Replaced with `DrainageInfo` returned by `DescribeWorkerDeploymentVersion`.
                     * @param request GetDeploymentReachabilityRequest message or plain object
                     * @returns Promise
                     */
                    public getDeploymentReachability(request: temporal.api.workflowservice.v1.IGetDeploymentReachabilityRequest): Promise<temporal.api.workflowservice.v1.GetDeploymentReachabilityResponse>;

                    /**
                     * Returns the current deployment (and its info) for a given deployment series.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * Deprecated. Replaced by `current_version` returned by `DescribeWorkerDeployment`.
                     * @param request GetCurrentDeploymentRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetCurrentDeploymentResponse
                     */
                    public getCurrentDeployment(request: temporal.api.workflowservice.v1.IGetCurrentDeploymentRequest, callback: temporal.api.workflowservice.v1.WorkflowService.GetCurrentDeploymentCallback): void;

                    /**
                     * Returns the current deployment (and its info) for a given deployment series.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * Deprecated. Replaced by `current_version` returned by `DescribeWorkerDeployment`.
                     * @param request GetCurrentDeploymentRequest message or plain object
                     * @returns Promise
                     */
                    public getCurrentDeployment(request: temporal.api.workflowservice.v1.IGetCurrentDeploymentRequest): Promise<temporal.api.workflowservice.v1.GetCurrentDeploymentResponse>;

                    /**
                     * Sets a deployment as the current deployment for its deployment series. Can optionally update
                     * the metadata of the deployment as well.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * Deprecated. Replaced by `SetWorkerDeploymentCurrentVersion`.
                     * @param request SetCurrentDeploymentRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SetCurrentDeploymentResponse
                     */
                    public setCurrentDeployment(request: temporal.api.workflowservice.v1.ISetCurrentDeploymentRequest, callback: temporal.api.workflowservice.v1.WorkflowService.SetCurrentDeploymentCallback): void;

                    /**
                     * Sets a deployment as the current deployment for its deployment series. Can optionally update
                     * the metadata of the deployment as well.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * Deprecated. Replaced by `SetWorkerDeploymentCurrentVersion`.
                     * @param request SetCurrentDeploymentRequest message or plain object
                     * @returns Promise
                     */
                    public setCurrentDeployment(request: temporal.api.workflowservice.v1.ISetCurrentDeploymentRequest): Promise<temporal.api.workflowservice.v1.SetCurrentDeploymentResponse>;

                    /**
                     * Set/unset the Current Version of a Worker Deployment. Automatically unsets the Ramping
                     * Version if it is the Version being set as Current.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request SetWorkerDeploymentCurrentVersionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SetWorkerDeploymentCurrentVersionResponse
                     */
                    public setWorkerDeploymentCurrentVersion(request: temporal.api.workflowservice.v1.ISetWorkerDeploymentCurrentVersionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.SetWorkerDeploymentCurrentVersionCallback): void;

                    /**
                     * Set/unset the Current Version of a Worker Deployment. Automatically unsets the Ramping
                     * Version if it is the Version being set as Current.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request SetWorkerDeploymentCurrentVersionRequest message or plain object
                     * @returns Promise
                     */
                    public setWorkerDeploymentCurrentVersion(request: temporal.api.workflowservice.v1.ISetWorkerDeploymentCurrentVersionRequest): Promise<temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionResponse>;

                    /**
                     * Describes a Worker Deployment.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request DescribeWorkerDeploymentRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DescribeWorkerDeploymentResponse
                     */
                    public describeWorkerDeployment(request: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DescribeWorkerDeploymentCallback): void;

                    /**
                     * Describes a Worker Deployment.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request DescribeWorkerDeploymentRequest message or plain object
                     * @returns Promise
                     */
                    public describeWorkerDeployment(request: temporal.api.workflowservice.v1.IDescribeWorkerDeploymentRequest): Promise<temporal.api.workflowservice.v1.DescribeWorkerDeploymentResponse>;

                    /**
                     * Deletes records of (an old) Deployment. A deployment can only be deleted if
                     * it has no Version in it.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request DeleteWorkerDeploymentRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DeleteWorkerDeploymentResponse
                     */
                    public deleteWorkerDeployment(request: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DeleteWorkerDeploymentCallback): void;

                    /**
                     * Deletes records of (an old) Deployment. A deployment can only be deleted if
                     * it has no Version in it.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request DeleteWorkerDeploymentRequest message or plain object
                     * @returns Promise
                     */
                    public deleteWorkerDeployment(request: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentRequest): Promise<temporal.api.workflowservice.v1.DeleteWorkerDeploymentResponse>;

                    /**
                     * Used for manual deletion of Versions. User can delete a Version only when all the
                     * following conditions are met:
                     * - It is not the Current or Ramping Version of its Deployment.
                     * - It has no active pollers (none of the task queues in the Version have pollers)
                     * - It is not draining (see WorkerDeploymentVersionInfo.drainage_info). This condition
                     * can be skipped by passing `skip-drainage=true`.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request DeleteWorkerDeploymentVersionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DeleteWorkerDeploymentVersionResponse
                     */
                    public deleteWorkerDeploymentVersion(request: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentVersionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DeleteWorkerDeploymentVersionCallback): void;

                    /**
                     * Used for manual deletion of Versions. User can delete a Version only when all the
                     * following conditions are met:
                     * - It is not the Current or Ramping Version of its Deployment.
                     * - It has no active pollers (none of the task queues in the Version have pollers)
                     * - It is not draining (see WorkerDeploymentVersionInfo.drainage_info). This condition
                     * can be skipped by passing `skip-drainage=true`.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request DeleteWorkerDeploymentVersionRequest message or plain object
                     * @returns Promise
                     */
                    public deleteWorkerDeploymentVersion(request: temporal.api.workflowservice.v1.IDeleteWorkerDeploymentVersionRequest): Promise<temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionResponse>;

                    /**
                     * Set/unset the Ramping Version of a Worker Deployment and its ramp percentage. Can be used for
                     * gradual ramp to unversioned workers too.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request SetWorkerDeploymentRampingVersionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SetWorkerDeploymentRampingVersionResponse
                     */
                    public setWorkerDeploymentRampingVersion(request: temporal.api.workflowservice.v1.ISetWorkerDeploymentRampingVersionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.SetWorkerDeploymentRampingVersionCallback): void;

                    /**
                     * Set/unset the Ramping Version of a Worker Deployment and its ramp percentage. Can be used for
                     * gradual ramp to unversioned workers too.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request SetWorkerDeploymentRampingVersionRequest message or plain object
                     * @returns Promise
                     */
                    public setWorkerDeploymentRampingVersion(request: temporal.api.workflowservice.v1.ISetWorkerDeploymentRampingVersionRequest): Promise<temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionResponse>;

                    /**
                     * Lists all Worker Deployments that are tracked in the Namespace.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request ListWorkerDeploymentsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListWorkerDeploymentsResponse
                     */
                    public listWorkerDeployments(request: temporal.api.workflowservice.v1.IListWorkerDeploymentsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListWorkerDeploymentsCallback): void;

                    /**
                     * Lists all Worker Deployments that are tracked in the Namespace.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request ListWorkerDeploymentsRequest message or plain object
                     * @returns Promise
                     */
                    public listWorkerDeployments(request: temporal.api.workflowservice.v1.IListWorkerDeploymentsRequest): Promise<temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse>;

                    /**
                     * Updates the user-given metadata attached to a Worker Deployment Version.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request UpdateWorkerDeploymentVersionMetadataRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateWorkerDeploymentVersionMetadataResponse
                     */
                    public updateWorkerDeploymentVersionMetadata(request: temporal.api.workflowservice.v1.IUpdateWorkerDeploymentVersionMetadataRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UpdateWorkerDeploymentVersionMetadataCallback): void;

                    /**
                     * Updates the user-given metadata attached to a Worker Deployment Version.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request UpdateWorkerDeploymentVersionMetadataRequest message or plain object
                     * @returns Promise
                     */
                    public updateWorkerDeploymentVersionMetadata(request: temporal.api.workflowservice.v1.IUpdateWorkerDeploymentVersionMetadataRequest): Promise<temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataResponse>;

                    /**
                     * Set/unset the ManagerIdentity of a Worker Deployment.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request SetWorkerDeploymentManagerRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SetWorkerDeploymentManagerResponse
                     */
                    public setWorkerDeploymentManager(request: temporal.api.workflowservice.v1.ISetWorkerDeploymentManagerRequest, callback: temporal.api.workflowservice.v1.WorkflowService.SetWorkerDeploymentManagerCallback): void;

                    /**
                     * Set/unset the ManagerIdentity of a Worker Deployment.
                     * Experimental. This API might significantly change or be removed in a future release.
                     * @param request SetWorkerDeploymentManagerRequest message or plain object
                     * @returns Promise
                     */
                    public setWorkerDeploymentManager(request: temporal.api.workflowservice.v1.ISetWorkerDeploymentManagerRequest): Promise<temporal.api.workflowservice.v1.SetWorkerDeploymentManagerResponse>;

                    /**
                     * Invokes the specified Update function on user Workflow code.
                     * @param request UpdateWorkflowExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateWorkflowExecutionResponse
                     */
                    public updateWorkflowExecution(request: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UpdateWorkflowExecutionCallback): void;

                    /**
                     * Invokes the specified Update function on user Workflow code.
                     * @param request UpdateWorkflowExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public updateWorkflowExecution(request: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionRequest): Promise<temporal.api.workflowservice.v1.UpdateWorkflowExecutionResponse>;

                    /**
                     * Polls a Workflow Execution for the outcome of a Workflow Update
                     * previously issued through the UpdateWorkflowExecution RPC. The effective
                     * timeout on this call will be shorter of the the caller-supplied gRPC
                     * timeout and the server's configured long-poll timeout.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We don't expose update polling API to HTTP in favor of a potential future non-blocking form. --)
                     * @param request PollWorkflowExecutionUpdateRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and PollWorkflowExecutionUpdateResponse
                     */
                    public pollWorkflowExecutionUpdate(request: temporal.api.workflowservice.v1.IPollWorkflowExecutionUpdateRequest, callback: temporal.api.workflowservice.v1.WorkflowService.PollWorkflowExecutionUpdateCallback): void;

                    /**
                     * Polls a Workflow Execution for the outcome of a Workflow Update
                     * previously issued through the UpdateWorkflowExecution RPC. The effective
                     * timeout on this call will be shorter of the the caller-supplied gRPC
                     * timeout and the server's configured long-poll timeout.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We don't expose update polling API to HTTP in favor of a potential future non-blocking form. --)
                     * @param request PollWorkflowExecutionUpdateRequest message or plain object
                     * @returns Promise
                     */
                    public pollWorkflowExecutionUpdate(request: temporal.api.workflowservice.v1.IPollWorkflowExecutionUpdateRequest): Promise<temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateResponse>;

                    /**
                     * StartBatchOperation starts a new batch operation
                     * @param request StartBatchOperationRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and StartBatchOperationResponse
                     */
                    public startBatchOperation(request: temporal.api.workflowservice.v1.IStartBatchOperationRequest, callback: temporal.api.workflowservice.v1.WorkflowService.StartBatchOperationCallback): void;

                    /**
                     * StartBatchOperation starts a new batch operation
                     * @param request StartBatchOperationRequest message or plain object
                     * @returns Promise
                     */
                    public startBatchOperation(request: temporal.api.workflowservice.v1.IStartBatchOperationRequest): Promise<temporal.api.workflowservice.v1.StartBatchOperationResponse>;

                    /**
                     * StopBatchOperation stops a batch operation
                     * @param request StopBatchOperationRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and StopBatchOperationResponse
                     */
                    public stopBatchOperation(request: temporal.api.workflowservice.v1.IStopBatchOperationRequest, callback: temporal.api.workflowservice.v1.WorkflowService.StopBatchOperationCallback): void;

                    /**
                     * StopBatchOperation stops a batch operation
                     * @param request StopBatchOperationRequest message or plain object
                     * @returns Promise
                     */
                    public stopBatchOperation(request: temporal.api.workflowservice.v1.IStopBatchOperationRequest): Promise<temporal.api.workflowservice.v1.StopBatchOperationResponse>;

                    /**
                     * DescribeBatchOperation returns the information about a batch operation
                     * @param request DescribeBatchOperationRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DescribeBatchOperationResponse
                     */
                    public describeBatchOperation(request: temporal.api.workflowservice.v1.IDescribeBatchOperationRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DescribeBatchOperationCallback): void;

                    /**
                     * DescribeBatchOperation returns the information about a batch operation
                     * @param request DescribeBatchOperationRequest message or plain object
                     * @returns Promise
                     */
                    public describeBatchOperation(request: temporal.api.workflowservice.v1.IDescribeBatchOperationRequest): Promise<temporal.api.workflowservice.v1.DescribeBatchOperationResponse>;

                    /**
                     * ListBatchOperations returns a list of batch operations
                     * @param request ListBatchOperationsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListBatchOperationsResponse
                     */
                    public listBatchOperations(request: temporal.api.workflowservice.v1.IListBatchOperationsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListBatchOperationsCallback): void;

                    /**
                     * ListBatchOperations returns a list of batch operations
                     * @param request ListBatchOperationsRequest message or plain object
                     * @returns Promise
                     */
                    public listBatchOperations(request: temporal.api.workflowservice.v1.IListBatchOperationsRequest): Promise<temporal.api.workflowservice.v1.ListBatchOperationsResponse>;

                    /**
                     * PollNexusTaskQueue is a long poll call used by workers to receive Nexus tasks.
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request PollNexusTaskQueueRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and PollNexusTaskQueueResponse
                     */
                    public pollNexusTaskQueue(request: temporal.api.workflowservice.v1.IPollNexusTaskQueueRequest, callback: temporal.api.workflowservice.v1.WorkflowService.PollNexusTaskQueueCallback): void;

                    /**
                     * PollNexusTaskQueue is a long poll call used by workers to receive Nexus tasks.
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request PollNexusTaskQueueRequest message or plain object
                     * @returns Promise
                     */
                    public pollNexusTaskQueue(request: temporal.api.workflowservice.v1.IPollNexusTaskQueueRequest): Promise<temporal.api.workflowservice.v1.PollNexusTaskQueueResponse>;

                    /**
                     * RespondNexusTaskCompleted is called by workers to respond to Nexus tasks received via PollNexusTaskQueue.
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request RespondNexusTaskCompletedRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RespondNexusTaskCompletedResponse
                     */
                    public respondNexusTaskCompleted(request: temporal.api.workflowservice.v1.IRespondNexusTaskCompletedRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RespondNexusTaskCompletedCallback): void;

                    /**
                     * RespondNexusTaskCompleted is called by workers to respond to Nexus tasks received via PollNexusTaskQueue.
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request RespondNexusTaskCompletedRequest message or plain object
                     * @returns Promise
                     */
                    public respondNexusTaskCompleted(request: temporal.api.workflowservice.v1.IRespondNexusTaskCompletedRequest): Promise<temporal.api.workflowservice.v1.RespondNexusTaskCompletedResponse>;

                    /**
                     * RespondNexusTaskFailed is called by workers to fail Nexus tasks received via PollNexusTaskQueue.
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request RespondNexusTaskFailedRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RespondNexusTaskFailedResponse
                     */
                    public respondNexusTaskFailed(request: temporal.api.workflowservice.v1.IRespondNexusTaskFailedRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RespondNexusTaskFailedCallback): void;

                    /**
                     * RespondNexusTaskFailed is called by workers to fail Nexus tasks received via PollNexusTaskQueue.
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: We do not expose worker API to HTTP. --)
                     * @param request RespondNexusTaskFailedRequest message or plain object
                     * @returns Promise
                     */
                    public respondNexusTaskFailed(request: temporal.api.workflowservice.v1.IRespondNexusTaskFailedRequest): Promise<temporal.api.workflowservice.v1.RespondNexusTaskFailedResponse>;

                    /**
                     * UpdateActivityOptions is called by the client to update the options of an activity by its ID or type.
                     * If there are multiple pending activities of the provided type - all of them will be updated.
                     * This API will be deprecated soon and replaced with a newer UpdateActivityExecutionOptions that is better named and
                     * structured to work well for standalone activities.
                     * @param request UpdateActivityOptionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateActivityOptionsResponse
                     */
                    public updateActivityOptions(request: temporal.api.workflowservice.v1.IUpdateActivityOptionsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UpdateActivityOptionsCallback): void;

                    /**
                     * UpdateActivityOptions is called by the client to update the options of an activity by its ID or type.
                     * If there are multiple pending activities of the provided type - all of them will be updated.
                     * This API will be deprecated soon and replaced with a newer UpdateActivityExecutionOptions that is better named and
                     * structured to work well for standalone activities.
                     * @param request UpdateActivityOptionsRequest message or plain object
                     * @returns Promise
                     */
                    public updateActivityOptions(request: temporal.api.workflowservice.v1.IUpdateActivityOptionsRequest): Promise<temporal.api.workflowservice.v1.UpdateActivityOptionsResponse>;

                    /**
                     * UpdateWorkflowExecutionOptions partially updates the WorkflowExecutionOptions of an existing workflow execution.
                     * @param request UpdateWorkflowExecutionOptionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateWorkflowExecutionOptionsResponse
                     */
                    public updateWorkflowExecutionOptions(request: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionOptionsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UpdateWorkflowExecutionOptionsCallback): void;

                    /**
                     * UpdateWorkflowExecutionOptions partially updates the WorkflowExecutionOptions of an existing workflow execution.
                     * @param request UpdateWorkflowExecutionOptionsRequest message or plain object
                     * @returns Promise
                     */
                    public updateWorkflowExecutionOptions(request: temporal.api.workflowservice.v1.IUpdateWorkflowExecutionOptionsRequest): Promise<temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsResponse>;

                    /**
                     * PauseActivity pauses the execution of an activity specified by its ID or type.
                     * If there are multiple pending activities of the provided type - all of them will be paused
                     *
                     * Pausing an activity means:
                     * - If the activity is currently waiting for a retry or is running and subsequently fails,
                     * it will not be rescheduled until it is unpaused.
                     * - If the activity is already paused, calling this method will have no effect.
                     * - If the activity is running and finishes successfully, the activity will be completed.
                     * - If the activity is running and finishes with failure:
                     * * if there is no retry left - the activity will be completed.
                     * * if there are more retries left - the activity will be paused.
                     * For long-running activities:
                     * - activities in paused state will send a cancellation with "activity_paused" set to 'true' in response to 'RecordActivityTaskHeartbeat'.
                     * - The activity should respond to the cancellation accordingly.
                     *
                     * Returns a `NotFound` error if there is no pending activity with the provided ID or type
                     * This API will be deprecated soon and replaced with a newer PauseActivityExecution that is better named and
                     * structured to work well for standalone activities.
                     * @param request PauseActivityRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and PauseActivityResponse
                     */
                    public pauseActivity(request: temporal.api.workflowservice.v1.IPauseActivityRequest, callback: temporal.api.workflowservice.v1.WorkflowService.PauseActivityCallback): void;

                    /**
                     * PauseActivity pauses the execution of an activity specified by its ID or type.
                     * If there are multiple pending activities of the provided type - all of them will be paused
                     *
                     * Pausing an activity means:
                     * - If the activity is currently waiting for a retry or is running and subsequently fails,
                     * it will not be rescheduled until it is unpaused.
                     * - If the activity is already paused, calling this method will have no effect.
                     * - If the activity is running and finishes successfully, the activity will be completed.
                     * - If the activity is running and finishes with failure:
                     * * if there is no retry left - the activity will be completed.
                     * * if there are more retries left - the activity will be paused.
                     * For long-running activities:
                     * - activities in paused state will send a cancellation with "activity_paused" set to 'true' in response to 'RecordActivityTaskHeartbeat'.
                     * - The activity should respond to the cancellation accordingly.
                     *
                     * Returns a `NotFound` error if there is no pending activity with the provided ID or type
                     * This API will be deprecated soon and replaced with a newer PauseActivityExecution that is better named and
                     * structured to work well for standalone activities.
                     * @param request PauseActivityRequest message or plain object
                     * @returns Promise
                     */
                    public pauseActivity(request: temporal.api.workflowservice.v1.IPauseActivityRequest): Promise<temporal.api.workflowservice.v1.PauseActivityResponse>;

                    /**
                     * UnpauseActivity unpauses the execution of an activity specified by its ID or type.
                     * If there are multiple pending activities of the provided type - all of them will be unpaused.
                     *
                     * If activity is not paused, this call will have no effect.
                     * If the activity was paused while waiting for retry, it will be scheduled immediately (* see 'jitter' flag).
                     * Once the activity is unpaused, all timeout timers will be regenerated.
                     *
                     * Flags:
                     * 'jitter': the activity will be scheduled at a random time within the jitter duration.
                     * 'reset_attempts': the number of attempts will be reset.
                     * 'reset_heartbeat': the activity heartbeat timer and heartbeats will be reset.
                     *
                     * Returns a `NotFound` error if there is no pending activity with the provided ID or type
                     * This API will be deprecated soon and replaced with a newer UnpauseActivityExecution that is better named and
                     * structured to work well for standalone activities.
                     * @param request UnpauseActivityRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UnpauseActivityResponse
                     */
                    public unpauseActivity(request: temporal.api.workflowservice.v1.IUnpauseActivityRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UnpauseActivityCallback): void;

                    /**
                     * UnpauseActivity unpauses the execution of an activity specified by its ID or type.
                     * If there are multiple pending activities of the provided type - all of them will be unpaused.
                     *
                     * If activity is not paused, this call will have no effect.
                     * If the activity was paused while waiting for retry, it will be scheduled immediately (* see 'jitter' flag).
                     * Once the activity is unpaused, all timeout timers will be regenerated.
                     *
                     * Flags:
                     * 'jitter': the activity will be scheduled at a random time within the jitter duration.
                     * 'reset_attempts': the number of attempts will be reset.
                     * 'reset_heartbeat': the activity heartbeat timer and heartbeats will be reset.
                     *
                     * Returns a `NotFound` error if there is no pending activity with the provided ID or type
                     * This API will be deprecated soon and replaced with a newer UnpauseActivityExecution that is better named and
                     * structured to work well for standalone activities.
                     * @param request UnpauseActivityRequest message or plain object
                     * @returns Promise
                     */
                    public unpauseActivity(request: temporal.api.workflowservice.v1.IUnpauseActivityRequest): Promise<temporal.api.workflowservice.v1.UnpauseActivityResponse>;

                    /**
                     * ResetActivity resets the execution of an activity specified by its ID or type.
                     * If there are multiple pending activities of the provided type - all of them will be reset.
                     *
                     * Resetting an activity means:
                     * * number of attempts will be reset to 0.
                     * * activity timeouts will be reset.
                     * * if the activity is waiting for retry, and it is not paused or 'keep_paused' is not provided:
                     * it will be scheduled immediately (* see 'jitter' flag),
                     *
                     * Flags:
                     *
                     * 'jitter': the activity will be scheduled at a random time within the jitter duration.
                     * If the activity currently paused it will be unpaused, unless 'keep_paused' flag is provided.
                     * 'reset_heartbeats': the activity heartbeat timer and heartbeats will be reset.
                     * 'keep_paused': if the activity is paused, it will remain paused.
                     *
                     * Returns a `NotFound` error if there is no pending activity with the provided ID or type.
                     * This API will be deprecated soon and replaced with a newer ResetActivityExecution that is better named and
                     * structured to work well for standalone activities.
                     * @param request ResetActivityRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ResetActivityResponse
                     */
                    public resetActivity(request: temporal.api.workflowservice.v1.IResetActivityRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ResetActivityCallback): void;

                    /**
                     * ResetActivity resets the execution of an activity specified by its ID or type.
                     * If there are multiple pending activities of the provided type - all of them will be reset.
                     *
                     * Resetting an activity means:
                     * * number of attempts will be reset to 0.
                     * * activity timeouts will be reset.
                     * * if the activity is waiting for retry, and it is not paused or 'keep_paused' is not provided:
                     * it will be scheduled immediately (* see 'jitter' flag),
                     *
                     * Flags:
                     *
                     * 'jitter': the activity will be scheduled at a random time within the jitter duration.
                     * If the activity currently paused it will be unpaused, unless 'keep_paused' flag is provided.
                     * 'reset_heartbeats': the activity heartbeat timer and heartbeats will be reset.
                     * 'keep_paused': if the activity is paused, it will remain paused.
                     *
                     * Returns a `NotFound` error if there is no pending activity with the provided ID or type.
                     * This API will be deprecated soon and replaced with a newer ResetActivityExecution that is better named and
                     * structured to work well for standalone activities.
                     * @param request ResetActivityRequest message or plain object
                     * @returns Promise
                     */
                    public resetActivity(request: temporal.api.workflowservice.v1.IResetActivityRequest): Promise<temporal.api.workflowservice.v1.ResetActivityResponse>;

                    /**
                     * Create a new workflow rule. The rules are used to control the workflow execution.
                     * The rule will be applied to all running and new workflows in the namespace.
                     * If the rule with such ID already exist this call will fail
                     * Note: the rules are part of namespace configuration and will be stored in the namespace config.
                     * Namespace config is eventually consistent.
                     * @param request CreateWorkflowRuleRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CreateWorkflowRuleResponse
                     */
                    public createWorkflowRule(request: temporal.api.workflowservice.v1.ICreateWorkflowRuleRequest, callback: temporal.api.workflowservice.v1.WorkflowService.CreateWorkflowRuleCallback): void;

                    /**
                     * Create a new workflow rule. The rules are used to control the workflow execution.
                     * The rule will be applied to all running and new workflows in the namespace.
                     * If the rule with such ID already exist this call will fail
                     * Note: the rules are part of namespace configuration and will be stored in the namespace config.
                     * Namespace config is eventually consistent.
                     * @param request CreateWorkflowRuleRequest message or plain object
                     * @returns Promise
                     */
                    public createWorkflowRule(request: temporal.api.workflowservice.v1.ICreateWorkflowRuleRequest): Promise<temporal.api.workflowservice.v1.CreateWorkflowRuleResponse>;

                    /**
                     * DescribeWorkflowRule return the rule specification for existing rule id.
                     * If there is no rule with such id - NOT FOUND error will be returned.
                     * @param request DescribeWorkflowRuleRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DescribeWorkflowRuleResponse
                     */
                    public describeWorkflowRule(request: temporal.api.workflowservice.v1.IDescribeWorkflowRuleRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DescribeWorkflowRuleCallback): void;

                    /**
                     * DescribeWorkflowRule return the rule specification for existing rule id.
                     * If there is no rule with such id - NOT FOUND error will be returned.
                     * @param request DescribeWorkflowRuleRequest message or plain object
                     * @returns Promise
                     */
                    public describeWorkflowRule(request: temporal.api.workflowservice.v1.IDescribeWorkflowRuleRequest): Promise<temporal.api.workflowservice.v1.DescribeWorkflowRuleResponse>;

                    /**
                     * Delete rule by rule id
                     * @param request DeleteWorkflowRuleRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DeleteWorkflowRuleResponse
                     */
                    public deleteWorkflowRule(request: temporal.api.workflowservice.v1.IDeleteWorkflowRuleRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DeleteWorkflowRuleCallback): void;

                    /**
                     * Delete rule by rule id
                     * @param request DeleteWorkflowRuleRequest message or plain object
                     * @returns Promise
                     */
                    public deleteWorkflowRule(request: temporal.api.workflowservice.v1.IDeleteWorkflowRuleRequest): Promise<temporal.api.workflowservice.v1.DeleteWorkflowRuleResponse>;

                    /**
                     * Return all namespace workflow rules
                     * @param request ListWorkflowRulesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListWorkflowRulesResponse
                     */
                    public listWorkflowRules(request: temporal.api.workflowservice.v1.IListWorkflowRulesRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListWorkflowRulesCallback): void;

                    /**
                     * Return all namespace workflow rules
                     * @param request ListWorkflowRulesRequest message or plain object
                     * @returns Promise
                     */
                    public listWorkflowRules(request: temporal.api.workflowservice.v1.IListWorkflowRulesRequest): Promise<temporal.api.workflowservice.v1.ListWorkflowRulesResponse>;

                    /**
                     * TriggerWorkflowRule allows to:
                     * * trigger existing rule for a specific workflow execution;
                     * * trigger rule for a specific workflow execution without creating a rule;
                     * This is useful for one-off operations.
                     * @param request TriggerWorkflowRuleRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and TriggerWorkflowRuleResponse
                     */
                    public triggerWorkflowRule(request: temporal.api.workflowservice.v1.ITriggerWorkflowRuleRequest, callback: temporal.api.workflowservice.v1.WorkflowService.TriggerWorkflowRuleCallback): void;

                    /**
                     * TriggerWorkflowRule allows to:
                     * * trigger existing rule for a specific workflow execution;
                     * * trigger rule for a specific workflow execution without creating a rule;
                     * This is useful for one-off operations.
                     * @param request TriggerWorkflowRuleRequest message or plain object
                     * @returns Promise
                     */
                    public triggerWorkflowRule(request: temporal.api.workflowservice.v1.ITriggerWorkflowRuleRequest): Promise<temporal.api.workflowservice.v1.TriggerWorkflowRuleResponse>;

                    /**
                     * WorkerHeartbeat receive heartbeat request from the worker.
                     * @param request RecordWorkerHeartbeatRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RecordWorkerHeartbeatResponse
                     */
                    public recordWorkerHeartbeat(request: temporal.api.workflowservice.v1.IRecordWorkerHeartbeatRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RecordWorkerHeartbeatCallback): void;

                    /**
                     * WorkerHeartbeat receive heartbeat request from the worker.
                     * @param request RecordWorkerHeartbeatRequest message or plain object
                     * @returns Promise
                     */
                    public recordWorkerHeartbeat(request: temporal.api.workflowservice.v1.IRecordWorkerHeartbeatRequest): Promise<temporal.api.workflowservice.v1.RecordWorkerHeartbeatResponse>;

                    /**
                     * ListWorkers is a visibility API to list worker status information in a specific namespace.
                     * @param request ListWorkersRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListWorkersResponse
                     */
                    public listWorkers(request: temporal.api.workflowservice.v1.IListWorkersRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListWorkersCallback): void;

                    /**
                     * ListWorkers is a visibility API to list worker status information in a specific namespace.
                     * @param request ListWorkersRequest message or plain object
                     * @returns Promise
                     */
                    public listWorkers(request: temporal.api.workflowservice.v1.IListWorkersRequest): Promise<temporal.api.workflowservice.v1.ListWorkersResponse>;

                    /**
                     * Updates task queue configuration.
                     * For the overall queue rate limit: the rate limit set by this api overrides the worker-set rate limit,
                     * which uncouples the rate limit from the worker lifecycle.
                     * If the overall queue rate limit is unset, the worker-set rate limit takes effect.
                     * @param request UpdateTaskQueueConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateTaskQueueConfigResponse
                     */
                    public updateTaskQueueConfig(request: temporal.api.workflowservice.v1.IUpdateTaskQueueConfigRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UpdateTaskQueueConfigCallback): void;

                    /**
                     * Updates task queue configuration.
                     * For the overall queue rate limit: the rate limit set by this api overrides the worker-set rate limit,
                     * which uncouples the rate limit from the worker lifecycle.
                     * If the overall queue rate limit is unset, the worker-set rate limit takes effect.
                     * @param request UpdateTaskQueueConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateTaskQueueConfig(request: temporal.api.workflowservice.v1.IUpdateTaskQueueConfigRequest): Promise<temporal.api.workflowservice.v1.UpdateTaskQueueConfigResponse>;

                    /**
                     * FetchWorkerConfig returns the worker configuration for a specific worker.
                     * @param request FetchWorkerConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and FetchWorkerConfigResponse
                     */
                    public fetchWorkerConfig(request: temporal.api.workflowservice.v1.IFetchWorkerConfigRequest, callback: temporal.api.workflowservice.v1.WorkflowService.FetchWorkerConfigCallback): void;

                    /**
                     * FetchWorkerConfig returns the worker configuration for a specific worker.
                     * @param request FetchWorkerConfigRequest message or plain object
                     * @returns Promise
                     */
                    public fetchWorkerConfig(request: temporal.api.workflowservice.v1.IFetchWorkerConfigRequest): Promise<temporal.api.workflowservice.v1.FetchWorkerConfigResponse>;

                    /**
                     * UpdateWorkerConfig updates the worker configuration of one or more workers.
                     * Can be used to partially update the worker configuration.
                     * Can be used to update the configuration of multiple workers.
                     * @param request UpdateWorkerConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateWorkerConfigResponse
                     */
                    public updateWorkerConfig(request: temporal.api.workflowservice.v1.IUpdateWorkerConfigRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UpdateWorkerConfigCallback): void;

                    /**
                     * UpdateWorkerConfig updates the worker configuration of one or more workers.
                     * Can be used to partially update the worker configuration.
                     * Can be used to update the configuration of multiple workers.
                     * @param request UpdateWorkerConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateWorkerConfig(request: temporal.api.workflowservice.v1.IUpdateWorkerConfigRequest): Promise<temporal.api.workflowservice.v1.UpdateWorkerConfigResponse>;

                    /**
                     * DescribeWorker returns information about the specified worker.
                     * @param request DescribeWorkerRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DescribeWorkerResponse
                     */
                    public describeWorker(request: temporal.api.workflowservice.v1.IDescribeWorkerRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DescribeWorkerCallback): void;

                    /**
                     * DescribeWorker returns information about the specified worker.
                     * @param request DescribeWorkerRequest message or plain object
                     * @returns Promise
                     */
                    public describeWorker(request: temporal.api.workflowservice.v1.IDescribeWorkerRequest): Promise<temporal.api.workflowservice.v1.DescribeWorkerResponse>;

                    /**
                     * Note: This is an experimental API and the behavior may change in a future release.
                     * PauseWorkflowExecution pauses the workflow execution specified in the request. Pausing a workflow execution results in
                     * - The workflow execution status changes to `PAUSED` and a new WORKFLOW_EXECUTION_PAUSED event is added to the history
                     * - No new workflow tasks or activity tasks are dispatched.
                     * - Any workflow task currently executing on the worker will be allowed to complete.
                     * - Any activity task currently executing will be paused.
                     * - All server-side events will continue to be processed by the server.
                     * - Queries & Updates on a paused workflow will be rejected.
                     * @param request PauseWorkflowExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and PauseWorkflowExecutionResponse
                     */
                    public pauseWorkflowExecution(request: temporal.api.workflowservice.v1.IPauseWorkflowExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.PauseWorkflowExecutionCallback): void;

                    /**
                     * Note: This is an experimental API and the behavior may change in a future release.
                     * PauseWorkflowExecution pauses the workflow execution specified in the request. Pausing a workflow execution results in
                     * - The workflow execution status changes to `PAUSED` and a new WORKFLOW_EXECUTION_PAUSED event is added to the history
                     * - No new workflow tasks or activity tasks are dispatched.
                     * - Any workflow task currently executing on the worker will be allowed to complete.
                     * - Any activity task currently executing will be paused.
                     * - All server-side events will continue to be processed by the server.
                     * - Queries & Updates on a paused workflow will be rejected.
                     * @param request PauseWorkflowExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public pauseWorkflowExecution(request: temporal.api.workflowservice.v1.IPauseWorkflowExecutionRequest): Promise<temporal.api.workflowservice.v1.PauseWorkflowExecutionResponse>;

                    /**
                     * Note: This is an experimental API and the behavior may change in a future release.
                     * UnpauseWorkflowExecution unpauses a previously paused workflow execution specified in the request.
                     * Unpausing a workflow execution results in
                     * - The workflow execution status changes to `RUNNING` and a new WORKFLOW_EXECUTION_UNPAUSED event is added to the history
                     * - Workflow tasks and activity tasks are resumed.
                     * @param request UnpauseWorkflowExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UnpauseWorkflowExecutionResponse
                     */
                    public unpauseWorkflowExecution(request: temporal.api.workflowservice.v1.IUnpauseWorkflowExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.UnpauseWorkflowExecutionCallback): void;

                    /**
                     * Note: This is an experimental API and the behavior may change in a future release.
                     * UnpauseWorkflowExecution unpauses a previously paused workflow execution specified in the request.
                     * Unpausing a workflow execution results in
                     * - The workflow execution status changes to `RUNNING` and a new WORKFLOW_EXECUTION_UNPAUSED event is added to the history
                     * - Workflow tasks and activity tasks are resumed.
                     * @param request UnpauseWorkflowExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public unpauseWorkflowExecution(request: temporal.api.workflowservice.v1.IUnpauseWorkflowExecutionRequest): Promise<temporal.api.workflowservice.v1.UnpauseWorkflowExecutionResponse>;

                    /**
                     * StartActivityExecution starts a new activity execution.
                     *
                     * Returns an `ActivityExecutionAlreadyStarted` error if an instance already exists with same activity ID in this namespace
                     * unless permitted by the specified ID conflict policy.
                     * @param request StartActivityExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and StartActivityExecutionResponse
                     */
                    public startActivityExecution(request: temporal.api.workflowservice.v1.IStartActivityExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.StartActivityExecutionCallback): void;

                    /**
                     * StartActivityExecution starts a new activity execution.
                     *
                     * Returns an `ActivityExecutionAlreadyStarted` error if an instance already exists with same activity ID in this namespace
                     * unless permitted by the specified ID conflict policy.
                     * @param request StartActivityExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public startActivityExecution(request: temporal.api.workflowservice.v1.IStartActivityExecutionRequest): Promise<temporal.api.workflowservice.v1.StartActivityExecutionResponse>;

                    /**
                     * DescribeActivityExecution returns information about an activity execution.
                     * It can be used to:
                     * - Get current activity info without waiting
                     * - Long-poll for next state change and return new activity info
                     * Response can optionally include activity input or outcome (if the activity has completed).
                     * @param request DescribeActivityExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DescribeActivityExecutionResponse
                     */
                    public describeActivityExecution(request: temporal.api.workflowservice.v1.IDescribeActivityExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DescribeActivityExecutionCallback): void;

                    /**
                     * DescribeActivityExecution returns information about an activity execution.
                     * It can be used to:
                     * - Get current activity info without waiting
                     * - Long-poll for next state change and return new activity info
                     * Response can optionally include activity input or outcome (if the activity has completed).
                     * @param request DescribeActivityExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public describeActivityExecution(request: temporal.api.workflowservice.v1.IDescribeActivityExecutionRequest): Promise<temporal.api.workflowservice.v1.DescribeActivityExecutionResponse>;

                    /**
                     * PollActivityExecution long-polls for an activity execution to complete and returns the
                     * outcome (result or failure).
                     * @param request PollActivityExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and PollActivityExecutionResponse
                     */
                    public pollActivityExecution(request: temporal.api.workflowservice.v1.IPollActivityExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.PollActivityExecutionCallback): void;

                    /**
                     * PollActivityExecution long-polls for an activity execution to complete and returns the
                     * outcome (result or failure).
                     * @param request PollActivityExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public pollActivityExecution(request: temporal.api.workflowservice.v1.IPollActivityExecutionRequest): Promise<temporal.api.workflowservice.v1.PollActivityExecutionResponse>;

                    /**
                     * ListActivityExecutions is a visibility API to list activity executions in a specific namespace.
                     * @param request ListActivityExecutionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListActivityExecutionsResponse
                     */
                    public listActivityExecutions(request: temporal.api.workflowservice.v1.IListActivityExecutionsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.ListActivityExecutionsCallback): void;

                    /**
                     * ListActivityExecutions is a visibility API to list activity executions in a specific namespace.
                     * @param request ListActivityExecutionsRequest message or plain object
                     * @returns Promise
                     */
                    public listActivityExecutions(request: temporal.api.workflowservice.v1.IListActivityExecutionsRequest): Promise<temporal.api.workflowservice.v1.ListActivityExecutionsResponse>;

                    /**
                     * CountActivityExecutions is a visibility API to count activity executions in a specific namespace.
                     * @param request CountActivityExecutionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CountActivityExecutionsResponse
                     */
                    public countActivityExecutions(request: temporal.api.workflowservice.v1.ICountActivityExecutionsRequest, callback: temporal.api.workflowservice.v1.WorkflowService.CountActivityExecutionsCallback): void;

                    /**
                     * CountActivityExecutions is a visibility API to count activity executions in a specific namespace.
                     * @param request CountActivityExecutionsRequest message or plain object
                     * @returns Promise
                     */
                    public countActivityExecutions(request: temporal.api.workflowservice.v1.ICountActivityExecutionsRequest): Promise<temporal.api.workflowservice.v1.CountActivityExecutionsResponse>;

                    /**
                     * RequestCancelActivityExecution requests cancellation of an activity execution.
                     *
                     * Cancellation is cooperative: this call records the request, but the activity must detect and
                     * acknowledge it for the activity to reach CANCELED status. The cancellation signal is
                     * delivered via `cancel_requested` in the heartbeat response; SDKs surface this via
                     * language-idiomatic mechanisms (context cancellation, exceptions, abort signals).
                     * @param request RequestCancelActivityExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RequestCancelActivityExecutionResponse
                     */
                    public requestCancelActivityExecution(request: temporal.api.workflowservice.v1.IRequestCancelActivityExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.RequestCancelActivityExecutionCallback): void;

                    /**
                     * RequestCancelActivityExecution requests cancellation of an activity execution.
                     *
                     * Cancellation is cooperative: this call records the request, but the activity must detect and
                     * acknowledge it for the activity to reach CANCELED status. The cancellation signal is
                     * delivered via `cancel_requested` in the heartbeat response; SDKs surface this via
                     * language-idiomatic mechanisms (context cancellation, exceptions, abort signals).
                     * @param request RequestCancelActivityExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public requestCancelActivityExecution(request: temporal.api.workflowservice.v1.IRequestCancelActivityExecutionRequest): Promise<temporal.api.workflowservice.v1.RequestCancelActivityExecutionResponse>;

                    /**
                     * TerminateActivityExecution terminates an existing activity execution immediately.
                     *
                     * Termination does not reach the worker and the activity code cannot react to it. A terminated activity may have a
                     * running attempt.
                     * @param request TerminateActivityExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and TerminateActivityExecutionResponse
                     */
                    public terminateActivityExecution(request: temporal.api.workflowservice.v1.ITerminateActivityExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.TerminateActivityExecutionCallback): void;

                    /**
                     * TerminateActivityExecution terminates an existing activity execution immediately.
                     *
                     * Termination does not reach the worker and the activity code cannot react to it. A terminated activity may have a
                     * running attempt.
                     * @param request TerminateActivityExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public terminateActivityExecution(request: temporal.api.workflowservice.v1.ITerminateActivityExecutionRequest): Promise<temporal.api.workflowservice.v1.TerminateActivityExecutionResponse>;

                    /**
                     * DeleteActivityExecution asynchronously deletes a specific activity execution (when
                     * ActivityExecution.run_id is provided) or the latest activity execution (when
                     * ActivityExecution.run_id is not provided). If the activity Execution is running, it will be
                     * terminated before deletion.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: Activity deletion not exposed to HTTP, users should use cancel or terminate. --)
                     * @param request DeleteActivityExecutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DeleteActivityExecutionResponse
                     */
                    public deleteActivityExecution(request: temporal.api.workflowservice.v1.IDeleteActivityExecutionRequest, callback: temporal.api.workflowservice.v1.WorkflowService.DeleteActivityExecutionCallback): void;

                    /**
                     * DeleteActivityExecution asynchronously deletes a specific activity execution (when
                     * ActivityExecution.run_id is provided) or the latest activity execution (when
                     * ActivityExecution.run_id is not provided). If the activity Execution is running, it will be
                     * terminated before deletion.
                     *
                     * (-- api-linter: core::0127::http-annotation=disabled
                     * aip.dev/not-precedent: Activity deletion not exposed to HTTP, users should use cancel or terminate. --)
                     * @param request DeleteActivityExecutionRequest message or plain object
                     * @returns Promise
                     */
                    public deleteActivityExecution(request: temporal.api.workflowservice.v1.IDeleteActivityExecutionRequest): Promise<temporal.api.workflowservice.v1.DeleteActivityExecutionResponse>;
                }

                namespace WorkflowService {

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#registerNamespace}.
                     * @param error Error, if any
                     * @param [response] RegisterNamespaceResponse
                     */
                    type RegisterNamespaceCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RegisterNamespaceResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#describeNamespace}.
                     * @param error Error, if any
                     * @param [response] DescribeNamespaceResponse
                     */
                    type DescribeNamespaceCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DescribeNamespaceResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listNamespaces}.
                     * @param error Error, if any
                     * @param [response] ListNamespacesResponse
                     */
                    type ListNamespacesCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListNamespacesResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#updateNamespace}.
                     * @param error Error, if any
                     * @param [response] UpdateNamespaceResponse
                     */
                    type UpdateNamespaceCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UpdateNamespaceResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#deprecateNamespace}.
                     * @param error Error, if any
                     * @param [response] DeprecateNamespaceResponse
                     */
                    type DeprecateNamespaceCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DeprecateNamespaceResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#startWorkflowExecution}.
                     * @param error Error, if any
                     * @param [response] StartWorkflowExecutionResponse
                     */
                    type StartWorkflowExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.StartWorkflowExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#executeMultiOperation}.
                     * @param error Error, if any
                     * @param [response] ExecuteMultiOperationResponse
                     */
                    type ExecuteMultiOperationCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ExecuteMultiOperationResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#getWorkflowExecutionHistory}.
                     * @param error Error, if any
                     * @param [response] GetWorkflowExecutionHistoryResponse
                     */
                    type GetWorkflowExecutionHistoryCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#getWorkflowExecutionHistoryReverse}.
                     * @param error Error, if any
                     * @param [response] GetWorkflowExecutionHistoryReverseResponse
                     */
                    type GetWorkflowExecutionHistoryReverseCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#pollWorkflowTaskQueue}.
                     * @param error Error, if any
                     * @param [response] PollWorkflowTaskQueueResponse
                     */
                    type PollWorkflowTaskQueueCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#respondWorkflowTaskCompleted}.
                     * @param error Error, if any
                     * @param [response] RespondWorkflowTaskCompletedResponse
                     */
                    type RespondWorkflowTaskCompletedCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#respondWorkflowTaskFailed}.
                     * @param error Error, if any
                     * @param [response] RespondWorkflowTaskFailedResponse
                     */
                    type RespondWorkflowTaskFailedCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RespondWorkflowTaskFailedResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#pollActivityTaskQueue}.
                     * @param error Error, if any
                     * @param [response] PollActivityTaskQueueResponse
                     */
                    type PollActivityTaskQueueCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.PollActivityTaskQueueResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#recordActivityTaskHeartbeat}.
                     * @param error Error, if any
                     * @param [response] RecordActivityTaskHeartbeatResponse
                     */
                    type RecordActivityTaskHeartbeatCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#recordActivityTaskHeartbeatById}.
                     * @param error Error, if any
                     * @param [response] RecordActivityTaskHeartbeatByIdResponse
                     */
                    type RecordActivityTaskHeartbeatByIdCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#respondActivityTaskCompleted}.
                     * @param error Error, if any
                     * @param [response] RespondActivityTaskCompletedResponse
                     */
                    type RespondActivityTaskCompletedCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RespondActivityTaskCompletedResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#respondActivityTaskCompletedById}.
                     * @param error Error, if any
                     * @param [response] RespondActivityTaskCompletedByIdResponse
                     */
                    type RespondActivityTaskCompletedByIdCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#respondActivityTaskFailed}.
                     * @param error Error, if any
                     * @param [response] RespondActivityTaskFailedResponse
                     */
                    type RespondActivityTaskFailedCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RespondActivityTaskFailedResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#respondActivityTaskFailedById}.
                     * @param error Error, if any
                     * @param [response] RespondActivityTaskFailedByIdResponse
                     */
                    type RespondActivityTaskFailedByIdCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#respondActivityTaskCanceled}.
                     * @param error Error, if any
                     * @param [response] RespondActivityTaskCanceledResponse
                     */
                    type RespondActivityTaskCanceledCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RespondActivityTaskCanceledResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#respondActivityTaskCanceledById}.
                     * @param error Error, if any
                     * @param [response] RespondActivityTaskCanceledByIdResponse
                     */
                    type RespondActivityTaskCanceledByIdCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#requestCancelWorkflowExecution}.
                     * @param error Error, if any
                     * @param [response] RequestCancelWorkflowExecutionResponse
                     */
                    type RequestCancelWorkflowExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#signalWorkflowExecution}.
                     * @param error Error, if any
                     * @param [response] SignalWorkflowExecutionResponse
                     */
                    type SignalWorkflowExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.SignalWorkflowExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#signalWithStartWorkflowExecution}.
                     * @param error Error, if any
                     * @param [response] SignalWithStartWorkflowExecutionResponse
                     */
                    type SignalWithStartWorkflowExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#resetWorkflowExecution}.
                     * @param error Error, if any
                     * @param [response] ResetWorkflowExecutionResponse
                     */
                    type ResetWorkflowExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ResetWorkflowExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#terminateWorkflowExecution}.
                     * @param error Error, if any
                     * @param [response] TerminateWorkflowExecutionResponse
                     */
                    type TerminateWorkflowExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.TerminateWorkflowExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#deleteWorkflowExecution}.
                     * @param error Error, if any
                     * @param [response] DeleteWorkflowExecutionResponse
                     */
                    type DeleteWorkflowExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DeleteWorkflowExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listOpenWorkflowExecutions}.
                     * @param error Error, if any
                     * @param [response] ListOpenWorkflowExecutionsResponse
                     */
                    type ListOpenWorkflowExecutionsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listClosedWorkflowExecutions}.
                     * @param error Error, if any
                     * @param [response] ListClosedWorkflowExecutionsResponse
                     */
                    type ListClosedWorkflowExecutionsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listWorkflowExecutions}.
                     * @param error Error, if any
                     * @param [response] ListWorkflowExecutionsResponse
                     */
                    type ListWorkflowExecutionsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListWorkflowExecutionsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listArchivedWorkflowExecutions}.
                     * @param error Error, if any
                     * @param [response] ListArchivedWorkflowExecutionsResponse
                     */
                    type ListArchivedWorkflowExecutionsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#scanWorkflowExecutions}.
                     * @param error Error, if any
                     * @param [response] ScanWorkflowExecutionsResponse
                     */
                    type ScanWorkflowExecutionsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ScanWorkflowExecutionsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#countWorkflowExecutions}.
                     * @param error Error, if any
                     * @param [response] CountWorkflowExecutionsResponse
                     */
                    type CountWorkflowExecutionsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#getSearchAttributes}.
                     * @param error Error, if any
                     * @param [response] GetSearchAttributesResponse
                     */
                    type GetSearchAttributesCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.GetSearchAttributesResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#respondQueryTaskCompleted}.
                     * @param error Error, if any
                     * @param [response] RespondQueryTaskCompletedResponse
                     */
                    type RespondQueryTaskCompletedCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RespondQueryTaskCompletedResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#resetStickyTaskQueue}.
                     * @param error Error, if any
                     * @param [response] ResetStickyTaskQueueResponse
                     */
                    type ResetStickyTaskQueueCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ResetStickyTaskQueueResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#shutdownWorker}.
                     * @param error Error, if any
                     * @param [response] ShutdownWorkerResponse
                     */
                    type ShutdownWorkerCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ShutdownWorkerResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#queryWorkflow}.
                     * @param error Error, if any
                     * @param [response] QueryWorkflowResponse
                     */
                    type QueryWorkflowCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.QueryWorkflowResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#describeWorkflowExecution}.
                     * @param error Error, if any
                     * @param [response] DescribeWorkflowExecutionResponse
                     */
                    type DescribeWorkflowExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DescribeWorkflowExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#describeTaskQueue}.
                     * @param error Error, if any
                     * @param [response] DescribeTaskQueueResponse
                     */
                    type DescribeTaskQueueCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DescribeTaskQueueResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#getClusterInfo}.
                     * @param error Error, if any
                     * @param [response] GetClusterInfoResponse
                     */
                    type GetClusterInfoCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.GetClusterInfoResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#getSystemInfo}.
                     * @param error Error, if any
                     * @param [response] GetSystemInfoResponse
                     */
                    type GetSystemInfoCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.GetSystemInfoResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listTaskQueuePartitions}.
                     * @param error Error, if any
                     * @param [response] ListTaskQueuePartitionsResponse
                     */
                    type ListTaskQueuePartitionsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListTaskQueuePartitionsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#createSchedule}.
                     * @param error Error, if any
                     * @param [response] CreateScheduleResponse
                     */
                    type CreateScheduleCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.CreateScheduleResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#describeSchedule}.
                     * @param error Error, if any
                     * @param [response] DescribeScheduleResponse
                     */
                    type DescribeScheduleCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DescribeScheduleResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#updateSchedule}.
                     * @param error Error, if any
                     * @param [response] UpdateScheduleResponse
                     */
                    type UpdateScheduleCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UpdateScheduleResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#patchSchedule}.
                     * @param error Error, if any
                     * @param [response] PatchScheduleResponse
                     */
                    type PatchScheduleCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.PatchScheduleResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listScheduleMatchingTimes}.
                     * @param error Error, if any
                     * @param [response] ListScheduleMatchingTimesResponse
                     */
                    type ListScheduleMatchingTimesCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListScheduleMatchingTimesResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#deleteSchedule}.
                     * @param error Error, if any
                     * @param [response] DeleteScheduleResponse
                     */
                    type DeleteScheduleCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DeleteScheduleResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listSchedules}.
                     * @param error Error, if any
                     * @param [response] ListSchedulesResponse
                     */
                    type ListSchedulesCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListSchedulesResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#countSchedules}.
                     * @param error Error, if any
                     * @param [response] CountSchedulesResponse
                     */
                    type CountSchedulesCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.CountSchedulesResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#updateWorkerBuildIdCompatibility}.
                     * @param error Error, if any
                     * @param [response] UpdateWorkerBuildIdCompatibilityResponse
                     */
                    type UpdateWorkerBuildIdCompatibilityCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#getWorkerBuildIdCompatibility}.
                     * @param error Error, if any
                     * @param [response] GetWorkerBuildIdCompatibilityResponse
                     */
                    type GetWorkerBuildIdCompatibilityCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#updateWorkerVersioningRules}.
                     * @param error Error, if any
                     * @param [response] UpdateWorkerVersioningRulesResponse
                     */
                    type UpdateWorkerVersioningRulesCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#getWorkerVersioningRules}.
                     * @param error Error, if any
                     * @param [response] GetWorkerVersioningRulesResponse
                     */
                    type GetWorkerVersioningRulesCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#getWorkerTaskReachability}.
                     * @param error Error, if any
                     * @param [response] GetWorkerTaskReachabilityResponse
                     */
                    type GetWorkerTaskReachabilityCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.GetWorkerTaskReachabilityResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#describeDeployment}.
                     * @param error Error, if any
                     * @param [response] DescribeDeploymentResponse
                     */
                    type DescribeDeploymentCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DescribeDeploymentResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#describeWorkerDeploymentVersion}.
                     * @param error Error, if any
                     * @param [response] DescribeWorkerDeploymentVersionResponse
                     */
                    type DescribeWorkerDeploymentVersionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DescribeWorkerDeploymentVersionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listDeployments}.
                     * @param error Error, if any
                     * @param [response] ListDeploymentsResponse
                     */
                    type ListDeploymentsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListDeploymentsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#getDeploymentReachability}.
                     * @param error Error, if any
                     * @param [response] GetDeploymentReachabilityResponse
                     */
                    type GetDeploymentReachabilityCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.GetDeploymentReachabilityResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#getCurrentDeployment}.
                     * @param error Error, if any
                     * @param [response] GetCurrentDeploymentResponse
                     */
                    type GetCurrentDeploymentCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.GetCurrentDeploymentResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#setCurrentDeployment}.
                     * @param error Error, if any
                     * @param [response] SetCurrentDeploymentResponse
                     */
                    type SetCurrentDeploymentCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.SetCurrentDeploymentResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#setWorkerDeploymentCurrentVersion}.
                     * @param error Error, if any
                     * @param [response] SetWorkerDeploymentCurrentVersionResponse
                     */
                    type SetWorkerDeploymentCurrentVersionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.SetWorkerDeploymentCurrentVersionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#describeWorkerDeployment}.
                     * @param error Error, if any
                     * @param [response] DescribeWorkerDeploymentResponse
                     */
                    type DescribeWorkerDeploymentCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DescribeWorkerDeploymentResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#deleteWorkerDeployment}.
                     * @param error Error, if any
                     * @param [response] DeleteWorkerDeploymentResponse
                     */
                    type DeleteWorkerDeploymentCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DeleteWorkerDeploymentResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#deleteWorkerDeploymentVersion}.
                     * @param error Error, if any
                     * @param [response] DeleteWorkerDeploymentVersionResponse
                     */
                    type DeleteWorkerDeploymentVersionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DeleteWorkerDeploymentVersionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#setWorkerDeploymentRampingVersion}.
                     * @param error Error, if any
                     * @param [response] SetWorkerDeploymentRampingVersionResponse
                     */
                    type SetWorkerDeploymentRampingVersionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.SetWorkerDeploymentRampingVersionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listWorkerDeployments}.
                     * @param error Error, if any
                     * @param [response] ListWorkerDeploymentsResponse
                     */
                    type ListWorkerDeploymentsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListWorkerDeploymentsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#updateWorkerDeploymentVersionMetadata}.
                     * @param error Error, if any
                     * @param [response] UpdateWorkerDeploymentVersionMetadataResponse
                     */
                    type UpdateWorkerDeploymentVersionMetadataCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UpdateWorkerDeploymentVersionMetadataResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#setWorkerDeploymentManager}.
                     * @param error Error, if any
                     * @param [response] SetWorkerDeploymentManagerResponse
                     */
                    type SetWorkerDeploymentManagerCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.SetWorkerDeploymentManagerResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#updateWorkflowExecution}.
                     * @param error Error, if any
                     * @param [response] UpdateWorkflowExecutionResponse
                     */
                    type UpdateWorkflowExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UpdateWorkflowExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#pollWorkflowExecutionUpdate}.
                     * @param error Error, if any
                     * @param [response] PollWorkflowExecutionUpdateResponse
                     */
                    type PollWorkflowExecutionUpdateCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#startBatchOperation}.
                     * @param error Error, if any
                     * @param [response] StartBatchOperationResponse
                     */
                    type StartBatchOperationCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.StartBatchOperationResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#stopBatchOperation}.
                     * @param error Error, if any
                     * @param [response] StopBatchOperationResponse
                     */
                    type StopBatchOperationCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.StopBatchOperationResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#describeBatchOperation}.
                     * @param error Error, if any
                     * @param [response] DescribeBatchOperationResponse
                     */
                    type DescribeBatchOperationCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DescribeBatchOperationResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listBatchOperations}.
                     * @param error Error, if any
                     * @param [response] ListBatchOperationsResponse
                     */
                    type ListBatchOperationsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListBatchOperationsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#pollNexusTaskQueue}.
                     * @param error Error, if any
                     * @param [response] PollNexusTaskQueueResponse
                     */
                    type PollNexusTaskQueueCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.PollNexusTaskQueueResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#respondNexusTaskCompleted}.
                     * @param error Error, if any
                     * @param [response] RespondNexusTaskCompletedResponse
                     */
                    type RespondNexusTaskCompletedCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RespondNexusTaskCompletedResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#respondNexusTaskFailed}.
                     * @param error Error, if any
                     * @param [response] RespondNexusTaskFailedResponse
                     */
                    type RespondNexusTaskFailedCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RespondNexusTaskFailedResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#updateActivityOptions}.
                     * @param error Error, if any
                     * @param [response] UpdateActivityOptionsResponse
                     */
                    type UpdateActivityOptionsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UpdateActivityOptionsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#updateWorkflowExecutionOptions}.
                     * @param error Error, if any
                     * @param [response] UpdateWorkflowExecutionOptionsResponse
                     */
                    type UpdateWorkflowExecutionOptionsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#pauseActivity}.
                     * @param error Error, if any
                     * @param [response] PauseActivityResponse
                     */
                    type PauseActivityCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.PauseActivityResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#unpauseActivity}.
                     * @param error Error, if any
                     * @param [response] UnpauseActivityResponse
                     */
                    type UnpauseActivityCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UnpauseActivityResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#resetActivity}.
                     * @param error Error, if any
                     * @param [response] ResetActivityResponse
                     */
                    type ResetActivityCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ResetActivityResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#createWorkflowRule}.
                     * @param error Error, if any
                     * @param [response] CreateWorkflowRuleResponse
                     */
                    type CreateWorkflowRuleCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.CreateWorkflowRuleResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#describeWorkflowRule}.
                     * @param error Error, if any
                     * @param [response] DescribeWorkflowRuleResponse
                     */
                    type DescribeWorkflowRuleCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DescribeWorkflowRuleResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#deleteWorkflowRule}.
                     * @param error Error, if any
                     * @param [response] DeleteWorkflowRuleResponse
                     */
                    type DeleteWorkflowRuleCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DeleteWorkflowRuleResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listWorkflowRules}.
                     * @param error Error, if any
                     * @param [response] ListWorkflowRulesResponse
                     */
                    type ListWorkflowRulesCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListWorkflowRulesResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#triggerWorkflowRule}.
                     * @param error Error, if any
                     * @param [response] TriggerWorkflowRuleResponse
                     */
                    type TriggerWorkflowRuleCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.TriggerWorkflowRuleResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#recordWorkerHeartbeat}.
                     * @param error Error, if any
                     * @param [response] RecordWorkerHeartbeatResponse
                     */
                    type RecordWorkerHeartbeatCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RecordWorkerHeartbeatResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listWorkers}.
                     * @param error Error, if any
                     * @param [response] ListWorkersResponse
                     */
                    type ListWorkersCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListWorkersResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#updateTaskQueueConfig}.
                     * @param error Error, if any
                     * @param [response] UpdateTaskQueueConfigResponse
                     */
                    type UpdateTaskQueueConfigCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UpdateTaskQueueConfigResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#fetchWorkerConfig}.
                     * @param error Error, if any
                     * @param [response] FetchWorkerConfigResponse
                     */
                    type FetchWorkerConfigCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.FetchWorkerConfigResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#updateWorkerConfig}.
                     * @param error Error, if any
                     * @param [response] UpdateWorkerConfigResponse
                     */
                    type UpdateWorkerConfigCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UpdateWorkerConfigResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#describeWorker}.
                     * @param error Error, if any
                     * @param [response] DescribeWorkerResponse
                     */
                    type DescribeWorkerCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DescribeWorkerResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#pauseWorkflowExecution}.
                     * @param error Error, if any
                     * @param [response] PauseWorkflowExecutionResponse
                     */
                    type PauseWorkflowExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.PauseWorkflowExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#unpauseWorkflowExecution}.
                     * @param error Error, if any
                     * @param [response] UnpauseWorkflowExecutionResponse
                     */
                    type UnpauseWorkflowExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.UnpauseWorkflowExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#startActivityExecution}.
                     * @param error Error, if any
                     * @param [response] StartActivityExecutionResponse
                     */
                    type StartActivityExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.StartActivityExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#describeActivityExecution}.
                     * @param error Error, if any
                     * @param [response] DescribeActivityExecutionResponse
                     */
                    type DescribeActivityExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DescribeActivityExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#pollActivityExecution}.
                     * @param error Error, if any
                     * @param [response] PollActivityExecutionResponse
                     */
                    type PollActivityExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.PollActivityExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#listActivityExecutions}.
                     * @param error Error, if any
                     * @param [response] ListActivityExecutionsResponse
                     */
                    type ListActivityExecutionsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.ListActivityExecutionsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#countActivityExecutions}.
                     * @param error Error, if any
                     * @param [response] CountActivityExecutionsResponse
                     */
                    type CountActivityExecutionsCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.CountActivityExecutionsResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#requestCancelActivityExecution}.
                     * @param error Error, if any
                     * @param [response] RequestCancelActivityExecutionResponse
                     */
                    type RequestCancelActivityExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.RequestCancelActivityExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#terminateActivityExecution}.
                     * @param error Error, if any
                     * @param [response] TerminateActivityExecutionResponse
                     */
                    type TerminateActivityExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.TerminateActivityExecutionResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.workflowservice.v1.WorkflowService#deleteActivityExecution}.
                     * @param error Error, if any
                     * @param [response] DeleteActivityExecutionResponse
                     */
                    type DeleteActivityExecutionCallback = (error: (Error|null), response?: temporal.api.workflowservice.v1.DeleteActivityExecutionResponse) => void;
                }
            }
        }

        /** Namespace activity. */
        namespace activity {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of an ActivityExecutionOutcome. */
                interface IActivityExecutionOutcome {

                    /** The result if the activity completed successfully. */
                    result?: (temporal.api.common.v1.IPayloads|null);

                    /** The failure if the activity completed unsuccessfully. */
                    failure?: (temporal.api.failure.v1.IFailure|null);
                }

                /** The outcome of a completed activity execution: either a successful result or a failure. */
                class ActivityExecutionOutcome implements IActivityExecutionOutcome {

                    /**
                     * Constructs a new ActivityExecutionOutcome.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.activity.v1.IActivityExecutionOutcome);

                    /** The result if the activity completed successfully. */
                    public result?: (temporal.api.common.v1.IPayloads|null);

                    /** The failure if the activity completed unsuccessfully. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** ActivityExecutionOutcome value. */
                    public value?: ("result"|"failure");

                    /**
                     * Creates a new ActivityExecutionOutcome instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityExecutionOutcome instance
                     */
                    public static create(properties?: temporal.api.activity.v1.IActivityExecutionOutcome): temporal.api.activity.v1.ActivityExecutionOutcome;

                    /**
                     * Encodes the specified ActivityExecutionOutcome message. Does not implicitly {@link temporal.api.activity.v1.ActivityExecutionOutcome.verify|verify} messages.
                     * @param message ActivityExecutionOutcome message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.activity.v1.IActivityExecutionOutcome, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityExecutionOutcome message, length delimited. Does not implicitly {@link temporal.api.activity.v1.ActivityExecutionOutcome.verify|verify} messages.
                     * @param message ActivityExecutionOutcome message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.activity.v1.IActivityExecutionOutcome, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityExecutionOutcome message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityExecutionOutcome
                     * @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): temporal.api.activity.v1.ActivityExecutionOutcome;

                    /**
                     * Decodes an ActivityExecutionOutcome message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityExecutionOutcome
                     * @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)): temporal.api.activity.v1.ActivityExecutionOutcome;

                    /**
                     * Creates an ActivityExecutionOutcome message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityExecutionOutcome
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.activity.v1.ActivityExecutionOutcome;

                    /**
                     * Creates a plain object from an ActivityExecutionOutcome message. Also converts values to other types if specified.
                     * @param message ActivityExecutionOutcome
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.activity.v1.ActivityExecutionOutcome, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityExecutionOutcome to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityExecutionOutcome
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityOptions. */
                interface IActivityOptions {

                    /** ActivityOptions taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * Indicates how long the caller is willing to wait for an activity completion. Limits how long
                     * retries will be attempted. Either this or `start_to_close_timeout` must be specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Limits time an activity task can stay in a task queue before a worker picks it up. This
                     * timeout is always non retryable, as all a retry would achieve is to put it back into the same
                     * queue. Defaults to `schedule_to_close_timeout` or workflow execution timeout if not
                     * specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum time an activity is allowed to execute after being picked up by a worker. This
                     * timeout is always retryable. Either this or `schedule_to_close_timeout` must be
                     * specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Maximum permitted time between successful worker heartbeats. */
                    heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /** The retry policy for the activity. Will never exceed `schedule_to_close_timeout`. */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /**
                     * Priority metadata. If this message is not present, or any fields are not
                     * present, they inherit the values from the workflow.
                     */
                    priority?: (temporal.api.common.v1.IPriority|null);
                }

                /** Represents an ActivityOptions. */
                class ActivityOptions implements IActivityOptions {

                    /**
                     * Constructs a new ActivityOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.activity.v1.IActivityOptions);

                    /** ActivityOptions taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * Indicates how long the caller is willing to wait for an activity completion. Limits how long
                     * retries will be attempted. Either this or `start_to_close_timeout` must be specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Limits time an activity task can stay in a task queue before a worker picks it up. This
                     * timeout is always non retryable, as all a retry would achieve is to put it back into the same
                     * queue. Defaults to `schedule_to_close_timeout` or workflow execution timeout if not
                     * specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum time an activity is allowed to execute after being picked up by a worker. This
                     * timeout is always retryable. Either this or `schedule_to_close_timeout` must be
                     * specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Maximum permitted time between successful worker heartbeats. */
                    public heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /** The retry policy for the activity. Will never exceed `schedule_to_close_timeout`. */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /**
                     * Priority metadata. If this message is not present, or any fields are not
                     * present, they inherit the values from the workflow.
                     */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * Creates a new ActivityOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityOptions instance
                     */
                    public static create(properties?: temporal.api.activity.v1.IActivityOptions): temporal.api.activity.v1.ActivityOptions;

                    /**
                     * Encodes the specified ActivityOptions message. Does not implicitly {@link temporal.api.activity.v1.ActivityOptions.verify|verify} messages.
                     * @param message ActivityOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.activity.v1.IActivityOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityOptions message, length delimited. Does not implicitly {@link temporal.api.activity.v1.ActivityOptions.verify|verify} messages.
                     * @param message ActivityOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.activity.v1.IActivityOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityOptions
                     * @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): temporal.api.activity.v1.ActivityOptions;

                    /**
                     * Decodes an ActivityOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityOptions
                     * @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)): temporal.api.activity.v1.ActivityOptions;

                    /**
                     * Creates an ActivityOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityOptions
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.activity.v1.ActivityOptions;

                    /**
                     * Creates a plain object from an ActivityOptions message. Also converts values to other types if specified.
                     * @param message ActivityOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.activity.v1.ActivityOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityExecutionInfo. */
                interface IActivityExecutionInfo {

                    /** Unique identifier of this activity within its namespace along with run ID (below). */
                    activityId?: (string|null);

                    /** ActivityExecutionInfo runId */
                    runId?: (string|null);

                    /** The type of the activity, a string that maps to a registered activity on a worker. */
                    activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** A general status for this activity, indicates whether it is currently running or in one of the terminal statuses. */
                    status?: (temporal.api.enums.v1.ActivityExecutionStatus|null);

                    /** More detailed breakdown of ACTIVITY_EXECUTION_STATUS_RUNNING. */
                    runState?: (temporal.api.enums.v1.PendingActivityState|null);

                    /** ActivityExecutionInfo taskQueue */
                    taskQueue?: (string|null);

                    /**
                     * Indicates how long the caller is willing to wait for an activity completion. Limits how long
                     * retries will be attempted.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Limits time an activity task can stay in a task queue before a worker picks it up. This
                     * timeout is always non retryable, as all a retry would achieve is to put it back into the same
                     * queue. Defaults to `schedule_to_close_timeout`.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum time a single activity attempt is allowed to execute after being picked up by a worker. This
                     * timeout is always retryable.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Maximum permitted time between successful worker heartbeats. */
                    heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /** The retry policy for the activity. Will never exceed `schedule_to_close_timeout`. */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Details provided in the last recorded activity heartbeat. */
                    heartbeatDetails?: (temporal.api.common.v1.IPayloads|null);

                    /** Time the last heartbeat was recorded. */
                    lastHeartbeatTime?: (google.protobuf.ITimestamp|null);

                    /** Time the last attempt was started. */
                    lastStartedTime?: (google.protobuf.ITimestamp|null);

                    /** The attempt this activity is currently on. Incremented each time a new attempt is scheduled. */
                    attempt?: (number|null);

                    /** How long this activity has been running for, including all attempts and backoff between attempts. */
                    executionDuration?: (google.protobuf.IDuration|null);

                    /** Time the activity was originally scheduled via a StartActivityExecution request. */
                    scheduleTime?: (google.protobuf.ITimestamp|null);

                    /** Scheduled time + schedule to close timeout. */
                    expirationTime?: (google.protobuf.ITimestamp|null);

                    /** Time when the activity transitioned to a closed state. */
                    closeTime?: (google.protobuf.ITimestamp|null);

                    /** Failure details from the last failed attempt. */
                    lastFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** ActivityExecutionInfo lastWorkerIdentity */
                    lastWorkerIdentity?: (string|null);

                    /**
                     * Time from the last attempt failure to the next activity retry.
                     * If the activity is currently running, this represents the next retry interval in case the attempt fails.
                     * If activity is currently backing off between attempt, this represents the current retry interval.
                     * If there is no next retry allowed, this field will be null.
                     * This interval is typically calculated from the specified retry policy, but may be modified if an activity fails
                     * with a retryable application failure specifying a retry delay.
                     */
                    currentRetryInterval?: (google.protobuf.IDuration|null);

                    /** The time when the last activity attempt completed. If activity has not been completed yet, it will be null. */
                    lastAttemptCompleteTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * The time when the next activity attempt will be scheduled.
                     * If activity is currently scheduled or started, this field will be null.
                     */
                    nextAttemptScheduleTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * The Worker Deployment Version this activity was dispatched to most recently.
                     * If nil, the activity has not yet been dispatched or was last dispatched to an unversioned worker.
                     */
                    lastDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Priority metadata. */
                    priority?: (temporal.api.common.v1.IPriority|null);

                    /** Incremented each time the activity's state is mutated in persistence. */
                    stateTransitionCount?: (Long|null);

                    /** Updated once on scheduled and once on terminal status. */
                    stateSizeBytes?: (Long|null);

                    /** ActivityExecutionInfo searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** ActivityExecutionInfo header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** Metadata for use by user interfaces to display the fixed as-of-start summary and details of the activity. */
                    userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Set if activity cancelation was requested. */
                    canceledReason?: (string|null);
                }

                /** Information about a standalone activity. */
                class ActivityExecutionInfo implements IActivityExecutionInfo {

                    /**
                     * Constructs a new ActivityExecutionInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.activity.v1.IActivityExecutionInfo);

                    /** Unique identifier of this activity within its namespace along with run ID (below). */
                    public activityId: string;

                    /** ActivityExecutionInfo runId. */
                    public runId: string;

                    /** The type of the activity, a string that maps to a registered activity on a worker. */
                    public activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** A general status for this activity, indicates whether it is currently running or in one of the terminal statuses. */
                    public status: temporal.api.enums.v1.ActivityExecutionStatus;

                    /** More detailed breakdown of ACTIVITY_EXECUTION_STATUS_RUNNING. */
                    public runState: temporal.api.enums.v1.PendingActivityState;

                    /** ActivityExecutionInfo taskQueue. */
                    public taskQueue: string;

                    /**
                     * Indicates how long the caller is willing to wait for an activity completion. Limits how long
                     * retries will be attempted.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Limits time an activity task can stay in a task queue before a worker picks it up. This
                     * timeout is always non retryable, as all a retry would achieve is to put it back into the same
                     * queue. Defaults to `schedule_to_close_timeout`.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum time a single activity attempt is allowed to execute after being picked up by a worker. This
                     * timeout is always retryable.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Maximum permitted time between successful worker heartbeats. */
                    public heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /** The retry policy for the activity. Will never exceed `schedule_to_close_timeout`. */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Details provided in the last recorded activity heartbeat. */
                    public heartbeatDetails?: (temporal.api.common.v1.IPayloads|null);

                    /** Time the last heartbeat was recorded. */
                    public lastHeartbeatTime?: (google.protobuf.ITimestamp|null);

                    /** Time the last attempt was started. */
                    public lastStartedTime?: (google.protobuf.ITimestamp|null);

                    /** The attempt this activity is currently on. Incremented each time a new attempt is scheduled. */
                    public attempt: number;

                    /** How long this activity has been running for, including all attempts and backoff between attempts. */
                    public executionDuration?: (google.protobuf.IDuration|null);

                    /** Time the activity was originally scheduled via a StartActivityExecution request. */
                    public scheduleTime?: (google.protobuf.ITimestamp|null);

                    /** Scheduled time + schedule to close timeout. */
                    public expirationTime?: (google.protobuf.ITimestamp|null);

                    /** Time when the activity transitioned to a closed state. */
                    public closeTime?: (google.protobuf.ITimestamp|null);

                    /** Failure details from the last failed attempt. */
                    public lastFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** ActivityExecutionInfo lastWorkerIdentity. */
                    public lastWorkerIdentity: string;

                    /**
                     * Time from the last attempt failure to the next activity retry.
                     * If the activity is currently running, this represents the next retry interval in case the attempt fails.
                     * If activity is currently backing off between attempt, this represents the current retry interval.
                     * If there is no next retry allowed, this field will be null.
                     * This interval is typically calculated from the specified retry policy, but may be modified if an activity fails
                     * with a retryable application failure specifying a retry delay.
                     */
                    public currentRetryInterval?: (google.protobuf.IDuration|null);

                    /** The time when the last activity attempt completed. If activity has not been completed yet, it will be null. */
                    public lastAttemptCompleteTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * The time when the next activity attempt will be scheduled.
                     * If activity is currently scheduled or started, this field will be null.
                     */
                    public nextAttemptScheduleTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * The Worker Deployment Version this activity was dispatched to most recently.
                     * If nil, the activity has not yet been dispatched or was last dispatched to an unversioned worker.
                     */
                    public lastDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Priority metadata. */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /** Incremented each time the activity's state is mutated in persistence. */
                    public stateTransitionCount: Long;

                    /** Updated once on scheduled and once on terminal status. */
                    public stateSizeBytes: Long;

                    /** ActivityExecutionInfo searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** ActivityExecutionInfo header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** Metadata for use by user interfaces to display the fixed as-of-start summary and details of the activity. */
                    public userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Set if activity cancelation was requested. */
                    public canceledReason: string;

                    /**
                     * Creates a new ActivityExecutionInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityExecutionInfo instance
                     */
                    public static create(properties?: temporal.api.activity.v1.IActivityExecutionInfo): temporal.api.activity.v1.ActivityExecutionInfo;

                    /**
                     * Encodes the specified ActivityExecutionInfo message. Does not implicitly {@link temporal.api.activity.v1.ActivityExecutionInfo.verify|verify} messages.
                     * @param message ActivityExecutionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.activity.v1.IActivityExecutionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityExecutionInfo message, length delimited. Does not implicitly {@link temporal.api.activity.v1.ActivityExecutionInfo.verify|verify} messages.
                     * @param message ActivityExecutionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.activity.v1.IActivityExecutionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityExecutionInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityExecutionInfo
                     * @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): temporal.api.activity.v1.ActivityExecutionInfo;

                    /**
                     * Decodes an ActivityExecutionInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityExecutionInfo
                     * @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)): temporal.api.activity.v1.ActivityExecutionInfo;

                    /**
                     * Creates an ActivityExecutionInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityExecutionInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.activity.v1.ActivityExecutionInfo;

                    /**
                     * Creates a plain object from an ActivityExecutionInfo message. Also converts values to other types if specified.
                     * @param message ActivityExecutionInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.activity.v1.ActivityExecutionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityExecutionInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityExecutionInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityExecutionListInfo. */
                interface IActivityExecutionListInfo {

                    /** A unique identifier of this activity within its namespace along with run ID (below). */
                    activityId?: (string|null);

                    /** The run ID of the standalone activity. */
                    runId?: (string|null);

                    /** The type of the activity, a string that maps to a registered activity on a worker. */
                    activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** Time the activity was originally scheduled via a StartActivityExecution request. */
                    scheduleTime?: (google.protobuf.ITimestamp|null);

                    /** If the activity is in a terminal status, this field represents the time the activity transitioned to that status. */
                    closeTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Only scheduled and terminal statuses appear here. More detailed information in PendingActivityInfo but not
                     * available in the list response.
                     */
                    status?: (temporal.api.enums.v1.ActivityExecutionStatus|null);

                    /** Search attributes from the start request. */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** The task queue this activity was scheduled on when it was originally started, updated on activity options update. */
                    taskQueue?: (string|null);

                    /** Updated on terminal status. */
                    stateTransitionCount?: (Long|null);

                    /** Updated once on scheduled and once on terminal status. */
                    stateSizeBytes?: (Long|null);

                    /**
                     * The difference between close time and scheduled time.
                     * This field is only populated if the activity is closed.
                     */
                    executionDuration?: (google.protobuf.IDuration|null);
                }

                /**
                 * Limited activity information returned in the list response.
                 * When adding fields here, ensure that it is also present in ActivityExecutionInfo (note that it
                 * may already be present in ActivityExecutionInfo but not at the top-level).
                 */
                class ActivityExecutionListInfo implements IActivityExecutionListInfo {

                    /**
                     * Constructs a new ActivityExecutionListInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.activity.v1.IActivityExecutionListInfo);

                    /** A unique identifier of this activity within its namespace along with run ID (below). */
                    public activityId: string;

                    /** The run ID of the standalone activity. */
                    public runId: string;

                    /** The type of the activity, a string that maps to a registered activity on a worker. */
                    public activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** Time the activity was originally scheduled via a StartActivityExecution request. */
                    public scheduleTime?: (google.protobuf.ITimestamp|null);

                    /** If the activity is in a terminal status, this field represents the time the activity transitioned to that status. */
                    public closeTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Only scheduled and terminal statuses appear here. More detailed information in PendingActivityInfo but not
                     * available in the list response.
                     */
                    public status: temporal.api.enums.v1.ActivityExecutionStatus;

                    /** Search attributes from the start request. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** The task queue this activity was scheduled on when it was originally started, updated on activity options update. */
                    public taskQueue: string;

                    /** Updated on terminal status. */
                    public stateTransitionCount: Long;

                    /** Updated once on scheduled and once on terminal status. */
                    public stateSizeBytes: Long;

                    /**
                     * The difference between close time and scheduled time.
                     * This field is only populated if the activity is closed.
                     */
                    public executionDuration?: (google.protobuf.IDuration|null);

                    /**
                     * Creates a new ActivityExecutionListInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityExecutionListInfo instance
                     */
                    public static create(properties?: temporal.api.activity.v1.IActivityExecutionListInfo): temporal.api.activity.v1.ActivityExecutionListInfo;

                    /**
                     * Encodes the specified ActivityExecutionListInfo message. Does not implicitly {@link temporal.api.activity.v1.ActivityExecutionListInfo.verify|verify} messages.
                     * @param message ActivityExecutionListInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.activity.v1.IActivityExecutionListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityExecutionListInfo message, length delimited. Does not implicitly {@link temporal.api.activity.v1.ActivityExecutionListInfo.verify|verify} messages.
                     * @param message ActivityExecutionListInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.activity.v1.IActivityExecutionListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityExecutionListInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityExecutionListInfo
                     * @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): temporal.api.activity.v1.ActivityExecutionListInfo;

                    /**
                     * Decodes an ActivityExecutionListInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityExecutionListInfo
                     * @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)): temporal.api.activity.v1.ActivityExecutionListInfo;

                    /**
                     * Creates an ActivityExecutionListInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityExecutionListInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.activity.v1.ActivityExecutionListInfo;

                    /**
                     * Creates a plain object from an ActivityExecutionListInfo message. Also converts values to other types if specified.
                     * @param message ActivityExecutionListInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.activity.v1.ActivityExecutionListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityExecutionListInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityExecutionListInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace deployment. */
        namespace deployment {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a WorkerDeploymentOptions. */
                interface IWorkerDeploymentOptions {

                    /** Required when `worker_versioning_mode==VERSIONED`. */
                    deploymentName?: (string|null);

                    /**
                     * The Build ID of the worker. Required when `worker_versioning_mode==VERSIONED`, in which case,
                     * the worker will be part of a Deployment Version.
                     */
                    buildId?: (string|null);

                    /**
                     * Required. Versioning Mode for this worker. Must be the same for all workers with the
                     * same `deployment_name` and `build_id` combination, across all Task Queues.
                     * When `worker_versioning_mode==VERSIONED`, the worker will be part of a Deployment Version.
                     */
                    workerVersioningMode?: (temporal.api.enums.v1.WorkerVersioningMode|null);
                }

                /**
                 * Worker Deployment options set in SDK that need to be sent to server in every poll.
                 * Experimental. Worker Deployments are experimental and might significantly change in the future.
                 */
                class WorkerDeploymentOptions implements IWorkerDeploymentOptions {

                    /**
                     * Constructs a new WorkerDeploymentOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IWorkerDeploymentOptions);

                    /** Required when `worker_versioning_mode==VERSIONED`. */
                    public deploymentName: string;

                    /**
                     * The Build ID of the worker. Required when `worker_versioning_mode==VERSIONED`, in which case,
                     * the worker will be part of a Deployment Version.
                     */
                    public buildId: string;

                    /**
                     * Required. Versioning Mode for this worker. Must be the same for all workers with the
                     * same `deployment_name` and `build_id` combination, across all Task Queues.
                     * When `worker_versioning_mode==VERSIONED`, the worker will be part of a Deployment Version.
                     */
                    public workerVersioningMode: temporal.api.enums.v1.WorkerVersioningMode;

                    /**
                     * Creates a new WorkerDeploymentOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerDeploymentOptions instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IWorkerDeploymentOptions): temporal.api.deployment.v1.WorkerDeploymentOptions;

                    /**
                     * Encodes the specified WorkerDeploymentOptions message. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentOptions.verify|verify} messages.
                     * @param message WorkerDeploymentOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IWorkerDeploymentOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerDeploymentOptions message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentOptions.verify|verify} messages.
                     * @param message WorkerDeploymentOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IWorkerDeploymentOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerDeploymentOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerDeploymentOptions
                     * @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): temporal.api.deployment.v1.WorkerDeploymentOptions;

                    /**
                     * Decodes a WorkerDeploymentOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerDeploymentOptions
                     * @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)): temporal.api.deployment.v1.WorkerDeploymentOptions;

                    /**
                     * Creates a WorkerDeploymentOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerDeploymentOptions
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.WorkerDeploymentOptions;

                    /**
                     * Creates a plain object from a WorkerDeploymentOptions message. Also converts values to other types if specified.
                     * @param message WorkerDeploymentOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.WorkerDeploymentOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerDeploymentOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerDeploymentOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Deployment. */
                interface IDeployment {

                    /**
                     * Different versions of the same worker service/application are related together by having a
                     * shared series name.
                     * Out of all deployments of a series, one can be designated as the current deployment, which
                     * receives new workflow executions and new tasks of workflows with
                     * `VERSIONING_BEHAVIOR_AUTO_UPGRADE` versioning behavior.
                     */
                    seriesName?: (string|null);

                    /**
                     * Build ID changes with each version of the worker when the worker program code and/or config
                     * changes.
                     */
                    buildId?: (string|null);
                }

                /**
                 * `Deployment` identifies a deployment of Temporal workers. The combination of deployment series
                 * name + build ID serves as the identifier. User can use `WorkerDeploymentOptions` in their worker
                 * programs to specify these values.
                 * Deprecated.
                 */
                class Deployment implements IDeployment {

                    /**
                     * Constructs a new Deployment.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IDeployment);

                    /**
                     * Different versions of the same worker service/application are related together by having a
                     * shared series name.
                     * Out of all deployments of a series, one can be designated as the current deployment, which
                     * receives new workflow executions and new tasks of workflows with
                     * `VERSIONING_BEHAVIOR_AUTO_UPGRADE` versioning behavior.
                     */
                    public seriesName: string;

                    /**
                     * Build ID changes with each version of the worker when the worker program code and/or config
                     * changes.
                     */
                    public buildId: string;

                    /**
                     * Creates a new Deployment instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Deployment instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IDeployment): temporal.api.deployment.v1.Deployment;

                    /**
                     * Encodes the specified Deployment message. Does not implicitly {@link temporal.api.deployment.v1.Deployment.verify|verify} messages.
                     * @param message Deployment message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IDeployment, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Deployment message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.Deployment.verify|verify} messages.
                     * @param message Deployment message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IDeployment, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Deployment message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Deployment
                     * @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): temporal.api.deployment.v1.Deployment;

                    /**
                     * Decodes a Deployment message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Deployment
                     * @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)): temporal.api.deployment.v1.Deployment;

                    /**
                     * Creates a Deployment message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Deployment
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.Deployment;

                    /**
                     * Creates a plain object from a Deployment message. Also converts values to other types if specified.
                     * @param message Deployment
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.Deployment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Deployment to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Deployment
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeploymentInfo. */
                interface IDeploymentInfo {

                    /** DeploymentInfo deployment */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** DeploymentInfo createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** DeploymentInfo taskQueueInfos */
                    taskQueueInfos?: (temporal.api.deployment.v1.DeploymentInfo.ITaskQueueInfo[]|null);

                    /**
                     * A user-defined set of key-values. Can be updated as part of write operations to the
                     * deployment, such as `SetCurrentDeployment`.
                     */
                    metadata?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

                    /** If this deployment is the current deployment of its deployment series. */
                    isCurrent?: (boolean|null);
                }

                /**
                 * `DeploymentInfo` holds information about a deployment. Deployment information is tracked
                 * automatically by server as soon as the first poll from that deployment reaches the server. There
                 * can be multiple task queue workers in a single deployment which are listed in this message.
                 * Deprecated.
                 */
                class DeploymentInfo implements IDeploymentInfo {

                    /**
                     * Constructs a new DeploymentInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IDeploymentInfo);

                    /** DeploymentInfo deployment. */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** DeploymentInfo createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** DeploymentInfo taskQueueInfos. */
                    public taskQueueInfos: temporal.api.deployment.v1.DeploymentInfo.ITaskQueueInfo[];

                    /**
                     * A user-defined set of key-values. Can be updated as part of write operations to the
                     * deployment, such as `SetCurrentDeployment`.
                     */
                    public metadata: { [k: string]: temporal.api.common.v1.IPayload };

                    /** If this deployment is the current deployment of its deployment series. */
                    public isCurrent: boolean;

                    /**
                     * Creates a new DeploymentInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeploymentInfo instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IDeploymentInfo): temporal.api.deployment.v1.DeploymentInfo;

                    /**
                     * Encodes the specified DeploymentInfo message. Does not implicitly {@link temporal.api.deployment.v1.DeploymentInfo.verify|verify} messages.
                     * @param message DeploymentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IDeploymentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeploymentInfo message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.DeploymentInfo.verify|verify} messages.
                     * @param message DeploymentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IDeploymentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeploymentInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeploymentInfo
                     * @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): temporal.api.deployment.v1.DeploymentInfo;

                    /**
                     * Decodes a DeploymentInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeploymentInfo
                     * @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)): temporal.api.deployment.v1.DeploymentInfo;

                    /**
                     * Creates a DeploymentInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeploymentInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.DeploymentInfo;

                    /**
                     * Creates a plain object from a DeploymentInfo message. Also converts values to other types if specified.
                     * @param message DeploymentInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.DeploymentInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeploymentInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeploymentInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace DeploymentInfo {

                    /** Properties of a TaskQueueInfo. */
                    interface ITaskQueueInfo {

                        /** TaskQueueInfo name */
                        name?: (string|null);

                        /** TaskQueueInfo type */
                        type?: (temporal.api.enums.v1.TaskQueueType|null);

                        /** When server saw the first poller for this task queue in this deployment. */
                        firstPollerTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a TaskQueueInfo. */
                    class TaskQueueInfo implements ITaskQueueInfo {

                        /**
                         * Constructs a new TaskQueueInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.deployment.v1.DeploymentInfo.ITaskQueueInfo);

                        /** TaskQueueInfo name. */
                        public name: string;

                        /** TaskQueueInfo type. */
                        public type: temporal.api.enums.v1.TaskQueueType;

                        /** When server saw the first poller for this task queue in this deployment. */
                        public firstPollerTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new TaskQueueInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TaskQueueInfo instance
                         */
                        public static create(properties?: temporal.api.deployment.v1.DeploymentInfo.ITaskQueueInfo): temporal.api.deployment.v1.DeploymentInfo.TaskQueueInfo;

                        /**
                         * Encodes the specified TaskQueueInfo message. Does not implicitly {@link temporal.api.deployment.v1.DeploymentInfo.TaskQueueInfo.verify|verify} messages.
                         * @param message TaskQueueInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.deployment.v1.DeploymentInfo.ITaskQueueInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TaskQueueInfo message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.DeploymentInfo.TaskQueueInfo.verify|verify} messages.
                         * @param message TaskQueueInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.deployment.v1.DeploymentInfo.ITaskQueueInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TaskQueueInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TaskQueueInfo
                         * @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): temporal.api.deployment.v1.DeploymentInfo.TaskQueueInfo;

                        /**
                         * Decodes a TaskQueueInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TaskQueueInfo
                         * @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)): temporal.api.deployment.v1.DeploymentInfo.TaskQueueInfo;

                        /**
                         * Creates a TaskQueueInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TaskQueueInfo
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.DeploymentInfo.TaskQueueInfo;

                        /**
                         * Creates a plain object from a TaskQueueInfo message. Also converts values to other types if specified.
                         * @param message TaskQueueInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.deployment.v1.DeploymentInfo.TaskQueueInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TaskQueueInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TaskQueueInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an UpdateDeploymentMetadata. */
                interface IUpdateDeploymentMetadata {

                    /** UpdateDeploymentMetadata upsertEntries */
                    upsertEntries?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);

                    /** List of keys to remove from the metadata. */
                    removeEntries?: (string[]|null);
                }

                /**
                 * Used as part of Deployment write APIs to update metadata attached to a deployment.
                 * Deprecated.
                 */
                class UpdateDeploymentMetadata implements IUpdateDeploymentMetadata {

                    /**
                     * Constructs a new UpdateDeploymentMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IUpdateDeploymentMetadata);

                    /** UpdateDeploymentMetadata upsertEntries. */
                    public upsertEntries: { [k: string]: temporal.api.common.v1.IPayload };

                    /** List of keys to remove from the metadata. */
                    public removeEntries: string[];

                    /**
                     * Creates a new UpdateDeploymentMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateDeploymentMetadata instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IUpdateDeploymentMetadata): temporal.api.deployment.v1.UpdateDeploymentMetadata;

                    /**
                     * Encodes the specified UpdateDeploymentMetadata message. Does not implicitly {@link temporal.api.deployment.v1.UpdateDeploymentMetadata.verify|verify} messages.
                     * @param message UpdateDeploymentMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IUpdateDeploymentMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateDeploymentMetadata message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.UpdateDeploymentMetadata.verify|verify} messages.
                     * @param message UpdateDeploymentMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IUpdateDeploymentMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateDeploymentMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateDeploymentMetadata
                     * @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): temporal.api.deployment.v1.UpdateDeploymentMetadata;

                    /**
                     * Decodes an UpdateDeploymentMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateDeploymentMetadata
                     * @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)): temporal.api.deployment.v1.UpdateDeploymentMetadata;

                    /**
                     * Creates an UpdateDeploymentMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateDeploymentMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.UpdateDeploymentMetadata;

                    /**
                     * Creates a plain object from an UpdateDeploymentMetadata message. Also converts values to other types if specified.
                     * @param message UpdateDeploymentMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.UpdateDeploymentMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateDeploymentMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateDeploymentMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeploymentListInfo. */
                interface IDeploymentListInfo {

                    /** DeploymentListInfo deployment */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** DeploymentListInfo createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** If this deployment is the current deployment of its deployment series. */
                    isCurrent?: (boolean|null);
                }

                /**
                 * DeploymentListInfo is an abbreviated set of fields from DeploymentInfo that's returned in
                 * ListDeployments.
                 * Deprecated.
                 */
                class DeploymentListInfo implements IDeploymentListInfo {

                    /**
                     * Constructs a new DeploymentListInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IDeploymentListInfo);

                    /** DeploymentListInfo deployment. */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** DeploymentListInfo createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** If this deployment is the current deployment of its deployment series. */
                    public isCurrent: boolean;

                    /**
                     * Creates a new DeploymentListInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeploymentListInfo instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IDeploymentListInfo): temporal.api.deployment.v1.DeploymentListInfo;

                    /**
                     * Encodes the specified DeploymentListInfo message. Does not implicitly {@link temporal.api.deployment.v1.DeploymentListInfo.verify|verify} messages.
                     * @param message DeploymentListInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IDeploymentListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeploymentListInfo message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.DeploymentListInfo.verify|verify} messages.
                     * @param message DeploymentListInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IDeploymentListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeploymentListInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeploymentListInfo
                     * @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): temporal.api.deployment.v1.DeploymentListInfo;

                    /**
                     * Decodes a DeploymentListInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeploymentListInfo
                     * @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)): temporal.api.deployment.v1.DeploymentListInfo;

                    /**
                     * Creates a DeploymentListInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeploymentListInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.DeploymentListInfo;

                    /**
                     * Creates a plain object from a DeploymentListInfo message. Also converts values to other types if specified.
                     * @param message DeploymentListInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.DeploymentListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeploymentListInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeploymentListInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkerDeploymentVersionInfo. */
                interface IWorkerDeploymentVersionInfo {

                    /** Deprecated. Use `deployment_version`. */
                    version?: (string|null);

                    /** The status of the Worker Deployment Version. */
                    status?: (temporal.api.enums.v1.WorkerDeploymentVersionStatus|null);

                    /** Required. */
                    deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** WorkerDeploymentVersionInfo deploymentName */
                    deploymentName?: (string|null);

                    /** WorkerDeploymentVersionInfo createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** Last time `current_since_time`, `ramping_since_time, or `ramp_percentage` of this version changed. */
                    routingChangedTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: 'Since' captures the field semantics despite being a preposition. --)
                     * Unset if not current.
                     */
                    currentSinceTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: 'Since' captures the field semantics despite being a preposition. --)
                     * Unset if not ramping. Updated when the version first starts ramping, not on each ramp change.
                     */
                    rampingSinceTime?: (google.protobuf.ITimestamp|null);

                    /** Timestamp when this version first became current or ramping. */
                    firstActivationTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Timestamp when this version last became current.
                     * Can be used to determine whether a version has ever been Current.
                     */
                    lastCurrentTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Timestamp when this version last stopped being current or ramping.
                     * Cleared if the version becomes current or ramping again.
                     */
                    lastDeactivationTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Range: [0, 100]. Must be zero if the version is not ramping (i.e. `ramping_since_time` is nil).
                     * Can be in the range [0, 100] if the version is ramping.
                     */
                    rampPercentage?: (number|null);

                    /**
                     * All the Task Queues that have ever polled from this Deployment version.
                     * Deprecated. Use `version_task_queues` in DescribeWorkerDeploymentVersionResponse instead.
                     */
                    taskQueueInfos?: (temporal.api.deployment.v1.WorkerDeploymentVersionInfo.IVersionTaskQueueInfo[]|null);

                    /**
                     * Helps user determine when it is safe to decommission the workers of this
                     * Version. Not present when version is current or ramping.
                     * Current limitations:
                     * - Not supported for Unversioned mode.
                     * - Periodically refreshed, may have delays up to few minutes (consult the
                     * last_checked_time value).
                     * - Refreshed only when version is not current or ramping AND the status is not
                     * "drained" yet.
                     * - Once the status is changed to "drained", it is not changed until the Version
                     * becomes Current or Ramping again, at which time the drainage info is cleared.
                     * This means if the Version is "drained" but new workflows are sent to it via
                     * Pinned Versioning Override, the status does not account for those Pinned-override
                     * executions and remains "drained".
                     */
                    drainageInfo?: (temporal.api.deployment.v1.IVersionDrainageInfo|null);

                    /** Arbitrary user-provided metadata attached to this version. */
                    metadata?: (temporal.api.deployment.v1.IVersionMetadata|null);
                }

                /**
                 * A Worker Deployment Version (Version, for short) represents all workers of the same
                 * code and config within a Deployment. Workers of the same Version are expected to
                 * behave exactly the same so when executions move between them there are no
                 * non-determinism issues.
                 * Worker Deployment Versions are created in Temporal server automatically when
                 * their first poller arrives to the server.
                 * Experimental. Worker Deployments are experimental and might significantly change in the future.
                 */
                class WorkerDeploymentVersionInfo implements IWorkerDeploymentVersionInfo {

                    /**
                     * Constructs a new WorkerDeploymentVersionInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IWorkerDeploymentVersionInfo);

                    /** Deprecated. Use `deployment_version`. */
                    public version: string;

                    /** The status of the Worker Deployment Version. */
                    public status: temporal.api.enums.v1.WorkerDeploymentVersionStatus;

                    /** Required. */
                    public deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** WorkerDeploymentVersionInfo deploymentName. */
                    public deploymentName: string;

                    /** WorkerDeploymentVersionInfo createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** Last time `current_since_time`, `ramping_since_time, or `ramp_percentage` of this version changed. */
                    public routingChangedTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: 'Since' captures the field semantics despite being a preposition. --)
                     * Unset if not current.
                     */
                    public currentSinceTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: 'Since' captures the field semantics despite being a preposition. --)
                     * Unset if not ramping. Updated when the version first starts ramping, not on each ramp change.
                     */
                    public rampingSinceTime?: (google.protobuf.ITimestamp|null);

                    /** Timestamp when this version first became current or ramping. */
                    public firstActivationTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Timestamp when this version last became current.
                     * Can be used to determine whether a version has ever been Current.
                     */
                    public lastCurrentTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Timestamp when this version last stopped being current or ramping.
                     * Cleared if the version becomes current or ramping again.
                     */
                    public lastDeactivationTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Range: [0, 100]. Must be zero if the version is not ramping (i.e. `ramping_since_time` is nil).
                     * Can be in the range [0, 100] if the version is ramping.
                     */
                    public rampPercentage: number;

                    /**
                     * All the Task Queues that have ever polled from this Deployment version.
                     * Deprecated. Use `version_task_queues` in DescribeWorkerDeploymentVersionResponse instead.
                     */
                    public taskQueueInfos: temporal.api.deployment.v1.WorkerDeploymentVersionInfo.IVersionTaskQueueInfo[];

                    /**
                     * Helps user determine when it is safe to decommission the workers of this
                     * Version. Not present when version is current or ramping.
                     * Current limitations:
                     * - Not supported for Unversioned mode.
                     * - Periodically refreshed, may have delays up to few minutes (consult the
                     * last_checked_time value).
                     * - Refreshed only when version is not current or ramping AND the status is not
                     * "drained" yet.
                     * - Once the status is changed to "drained", it is not changed until the Version
                     * becomes Current or Ramping again, at which time the drainage info is cleared.
                     * This means if the Version is "drained" but new workflows are sent to it via
                     * Pinned Versioning Override, the status does not account for those Pinned-override
                     * executions and remains "drained".
                     */
                    public drainageInfo?: (temporal.api.deployment.v1.IVersionDrainageInfo|null);

                    /** Arbitrary user-provided metadata attached to this version. */
                    public metadata?: (temporal.api.deployment.v1.IVersionMetadata|null);

                    /**
                     * Creates a new WorkerDeploymentVersionInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerDeploymentVersionInfo instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IWorkerDeploymentVersionInfo): temporal.api.deployment.v1.WorkerDeploymentVersionInfo;

                    /**
                     * Encodes the specified WorkerDeploymentVersionInfo message. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentVersionInfo.verify|verify} messages.
                     * @param message WorkerDeploymentVersionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IWorkerDeploymentVersionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerDeploymentVersionInfo message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentVersionInfo.verify|verify} messages.
                     * @param message WorkerDeploymentVersionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IWorkerDeploymentVersionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerDeploymentVersionInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerDeploymentVersionInfo
                     * @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): temporal.api.deployment.v1.WorkerDeploymentVersionInfo;

                    /**
                     * Decodes a WorkerDeploymentVersionInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerDeploymentVersionInfo
                     * @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)): temporal.api.deployment.v1.WorkerDeploymentVersionInfo;

                    /**
                     * Creates a WorkerDeploymentVersionInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerDeploymentVersionInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.WorkerDeploymentVersionInfo;

                    /**
                     * Creates a plain object from a WorkerDeploymentVersionInfo message. Also converts values to other types if specified.
                     * @param message WorkerDeploymentVersionInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.WorkerDeploymentVersionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerDeploymentVersionInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerDeploymentVersionInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace WorkerDeploymentVersionInfo {

                    /** Properties of a VersionTaskQueueInfo. */
                    interface IVersionTaskQueueInfo {

                        /** VersionTaskQueueInfo name */
                        name?: (string|null);

                        /** VersionTaskQueueInfo type */
                        type?: (temporal.api.enums.v1.TaskQueueType|null);
                    }

                    /** Represents a VersionTaskQueueInfo. */
                    class VersionTaskQueueInfo implements IVersionTaskQueueInfo {

                        /**
                         * Constructs a new VersionTaskQueueInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.deployment.v1.WorkerDeploymentVersionInfo.IVersionTaskQueueInfo);

                        /** VersionTaskQueueInfo name. */
                        public name: string;

                        /** VersionTaskQueueInfo type. */
                        public type: temporal.api.enums.v1.TaskQueueType;

                        /**
                         * Creates a new VersionTaskQueueInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns VersionTaskQueueInfo instance
                         */
                        public static create(properties?: temporal.api.deployment.v1.WorkerDeploymentVersionInfo.IVersionTaskQueueInfo): temporal.api.deployment.v1.WorkerDeploymentVersionInfo.VersionTaskQueueInfo;

                        /**
                         * Encodes the specified VersionTaskQueueInfo message. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentVersionInfo.VersionTaskQueueInfo.verify|verify} messages.
                         * @param message VersionTaskQueueInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.deployment.v1.WorkerDeploymentVersionInfo.IVersionTaskQueueInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VersionTaskQueueInfo message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentVersionInfo.VersionTaskQueueInfo.verify|verify} messages.
                         * @param message VersionTaskQueueInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.deployment.v1.WorkerDeploymentVersionInfo.IVersionTaskQueueInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VersionTaskQueueInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns VersionTaskQueueInfo
                         * @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): temporal.api.deployment.v1.WorkerDeploymentVersionInfo.VersionTaskQueueInfo;

                        /**
                         * Decodes a VersionTaskQueueInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns VersionTaskQueueInfo
                         * @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)): temporal.api.deployment.v1.WorkerDeploymentVersionInfo.VersionTaskQueueInfo;

                        /**
                         * Creates a VersionTaskQueueInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns VersionTaskQueueInfo
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.WorkerDeploymentVersionInfo.VersionTaskQueueInfo;

                        /**
                         * Creates a plain object from a VersionTaskQueueInfo message. Also converts values to other types if specified.
                         * @param message VersionTaskQueueInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.deployment.v1.WorkerDeploymentVersionInfo.VersionTaskQueueInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VersionTaskQueueInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for VersionTaskQueueInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a VersionDrainageInfo. */
                interface IVersionDrainageInfo {

                    /**
                     * Set to DRAINING when the version first stops accepting new executions (is no longer current or ramping).
                     * Set to DRAINED when no more open pinned workflows exist on this version.
                     */
                    status?: (temporal.api.enums.v1.VersionDrainageStatus|null);

                    /** Last time the drainage status changed. */
                    lastChangedTime?: (google.protobuf.ITimestamp|null);

                    /** Last time the system checked for drainage of this version. */
                    lastCheckedTime?: (google.protobuf.ITimestamp|null);
                }

                /**
                 * Information about workflow drainage to help the user determine when it is safe
                 * to decommission a Version. Not present while version is current or ramping.
                 * Experimental. Worker Deployments are experimental and might significantly change in the future.
                 */
                class VersionDrainageInfo implements IVersionDrainageInfo {

                    /**
                     * Constructs a new VersionDrainageInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IVersionDrainageInfo);

                    /**
                     * Set to DRAINING when the version first stops accepting new executions (is no longer current or ramping).
                     * Set to DRAINED when no more open pinned workflows exist on this version.
                     */
                    public status: temporal.api.enums.v1.VersionDrainageStatus;

                    /** Last time the drainage status changed. */
                    public lastChangedTime?: (google.protobuf.ITimestamp|null);

                    /** Last time the system checked for drainage of this version. */
                    public lastCheckedTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new VersionDrainageInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns VersionDrainageInfo instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IVersionDrainageInfo): temporal.api.deployment.v1.VersionDrainageInfo;

                    /**
                     * Encodes the specified VersionDrainageInfo message. Does not implicitly {@link temporal.api.deployment.v1.VersionDrainageInfo.verify|verify} messages.
                     * @param message VersionDrainageInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IVersionDrainageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified VersionDrainageInfo message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.VersionDrainageInfo.verify|verify} messages.
                     * @param message VersionDrainageInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IVersionDrainageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a VersionDrainageInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns VersionDrainageInfo
                     * @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): temporal.api.deployment.v1.VersionDrainageInfo;

                    /**
                     * Decodes a VersionDrainageInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns VersionDrainageInfo
                     * @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)): temporal.api.deployment.v1.VersionDrainageInfo;

                    /**
                     * Creates a VersionDrainageInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns VersionDrainageInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.VersionDrainageInfo;

                    /**
                     * Creates a plain object from a VersionDrainageInfo message. Also converts values to other types if specified.
                     * @param message VersionDrainageInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.VersionDrainageInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this VersionDrainageInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for VersionDrainageInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkerDeploymentInfo. */
                interface IWorkerDeploymentInfo {

                    /** Identifies a Worker Deployment. Must be unique within the namespace. */
                    name?: (string|null);

                    /**
                     * Deployment Versions that are currently tracked in this Deployment. A DeploymentVersion will be
                     * cleaned up automatically if all the following conditions meet:
                     * - It does not receive new executions (is not current or ramping)
                     * - It has no active pollers (see WorkerDeploymentVersionInfo.pollers_status)
                     * - It is drained (see WorkerDeploymentVersionInfo.drainage_status)
                     */
                    versionSummaries?: (temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary[]|null);

                    /** WorkerDeploymentInfo createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** WorkerDeploymentInfo routingConfig */
                    routingConfig?: (temporal.api.deployment.v1.IRoutingConfig|null);

                    /**
                     * Identity of the last client who modified the configuration of this Deployment. Set to the
                     * `identity` value sent by APIs such as `SetWorkerDeploymentCurrentVersion` and
                     * `SetWorkerDeploymentRampingVersion`.
                     */
                    lastModifierIdentity?: (string|null);

                    /**
                     * Identity of the client that has the exclusive right to make changes to this Worker Deployment.
                     * Empty by default.
                     * If this is set, clients whose identity does not match `manager_identity` will not be able to make changes
                     * to this Worker Deployment. They can either set their own identity as the manager or unset the field to proceed.
                     */
                    managerIdentity?: (string|null);

                    /**
                     * Indicates whether the routing_config has been fully propagated to all
                     * relevant task queues and their partitions.
                     */
                    routingConfigUpdateState?: (temporal.api.enums.v1.RoutingConfigUpdateState|null);
                }

                /**
                 * A Worker Deployment (Deployment, for short) represents all workers serving
                 * a shared set of Task Queues. Typically, a Deployment represents one service or
                 * application.
                 * A Deployment contains multiple Deployment Versions, each representing a different
                 * version of workers. (see documentation of WorkerDeploymentVersionInfo)
                 * Deployment records are created in Temporal server automatically when their
                 * first poller arrives to the server.
                 * Experimental. Worker Deployments are experimental and might significantly change in the future.
                 */
                class WorkerDeploymentInfo implements IWorkerDeploymentInfo {

                    /**
                     * Constructs a new WorkerDeploymentInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IWorkerDeploymentInfo);

                    /** Identifies a Worker Deployment. Must be unique within the namespace. */
                    public name: string;

                    /**
                     * Deployment Versions that are currently tracked in this Deployment. A DeploymentVersion will be
                     * cleaned up automatically if all the following conditions meet:
                     * - It does not receive new executions (is not current or ramping)
                     * - It has no active pollers (see WorkerDeploymentVersionInfo.pollers_status)
                     * - It is drained (see WorkerDeploymentVersionInfo.drainage_status)
                     */
                    public versionSummaries: temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary[];

                    /** WorkerDeploymentInfo createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** WorkerDeploymentInfo routingConfig. */
                    public routingConfig?: (temporal.api.deployment.v1.IRoutingConfig|null);

                    /**
                     * Identity of the last client who modified the configuration of this Deployment. Set to the
                     * `identity` value sent by APIs such as `SetWorkerDeploymentCurrentVersion` and
                     * `SetWorkerDeploymentRampingVersion`.
                     */
                    public lastModifierIdentity: string;

                    /**
                     * Identity of the client that has the exclusive right to make changes to this Worker Deployment.
                     * Empty by default.
                     * If this is set, clients whose identity does not match `manager_identity` will not be able to make changes
                     * to this Worker Deployment. They can either set their own identity as the manager or unset the field to proceed.
                     */
                    public managerIdentity: string;

                    /**
                     * Indicates whether the routing_config has been fully propagated to all
                     * relevant task queues and their partitions.
                     */
                    public routingConfigUpdateState: temporal.api.enums.v1.RoutingConfigUpdateState;

                    /**
                     * Creates a new WorkerDeploymentInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerDeploymentInfo instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IWorkerDeploymentInfo): temporal.api.deployment.v1.WorkerDeploymentInfo;

                    /**
                     * Encodes the specified WorkerDeploymentInfo message. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentInfo.verify|verify} messages.
                     * @param message WorkerDeploymentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IWorkerDeploymentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerDeploymentInfo message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentInfo.verify|verify} messages.
                     * @param message WorkerDeploymentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IWorkerDeploymentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerDeploymentInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerDeploymentInfo
                     * @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): temporal.api.deployment.v1.WorkerDeploymentInfo;

                    /**
                     * Decodes a WorkerDeploymentInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerDeploymentInfo
                     * @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)): temporal.api.deployment.v1.WorkerDeploymentInfo;

                    /**
                     * Creates a WorkerDeploymentInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerDeploymentInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.WorkerDeploymentInfo;

                    /**
                     * Creates a plain object from a WorkerDeploymentInfo message. Also converts values to other types if specified.
                     * @param message WorkerDeploymentInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.WorkerDeploymentInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerDeploymentInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerDeploymentInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace WorkerDeploymentInfo {

                    /** Properties of a WorkerDeploymentVersionSummary. */
                    interface IWorkerDeploymentVersionSummary {

                        /** Deprecated. Use `deployment_version`. */
                        version?: (string|null);

                        /** The status of the Worker Deployment Version. */
                        status?: (temporal.api.enums.v1.WorkerDeploymentVersionStatus|null);

                        /** Required. */
                        deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                        /** WorkerDeploymentVersionSummary createTime */
                        createTime?: (google.protobuf.ITimestamp|null);

                        /** Deprecated. Use `drainage_info` instead. */
                        drainageStatus?: (temporal.api.enums.v1.VersionDrainageStatus|null);

                        /**
                         * Information about workflow drainage to help the user determine when it is safe
                         * to decommission a Version. Not present while version is current or ramping
                         */
                        drainageInfo?: (temporal.api.deployment.v1.IVersionDrainageInfo|null);

                        /**
                         * Unset if not current.
                         * (-- api-linter: core::0140::prepositions=disabled
                         * aip.dev/not-precedent: 'Since' captures the field semantics despite being a preposition. --)
                         */
                        currentSinceTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Unset if not ramping. Updated when the version first starts ramping, not on each ramp change.
                         * (-- api-linter: core::0140::prepositions=disabled
                         * aip.dev/not-precedent: 'Since' captures the field semantics despite being a preposition. --)
                         */
                        rampingSinceTime?: (google.protobuf.ITimestamp|null);

                        /** Last time `current_since_time`, `ramping_since_time, or `ramp_percentage` of this version changed. */
                        routingUpdateTime?: (google.protobuf.ITimestamp|null);

                        /** Timestamp when this version first became current or ramping. */
                        firstActivationTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Timestamp when this version last became current.
                         * Can be used to determine whether a version has ever been Current.
                         */
                        lastCurrentTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Timestamp when this version last stopped being current or ramping.
                         * Cleared if the version becomes current or ramping again.
                         */
                        lastDeactivationTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a WorkerDeploymentVersionSummary. */
                    class WorkerDeploymentVersionSummary implements IWorkerDeploymentVersionSummary {

                        /**
                         * Constructs a new WorkerDeploymentVersionSummary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary);

                        /** Deprecated. Use `deployment_version`. */
                        public version: string;

                        /** The status of the Worker Deployment Version. */
                        public status: temporal.api.enums.v1.WorkerDeploymentVersionStatus;

                        /** Required. */
                        public deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                        /** WorkerDeploymentVersionSummary createTime. */
                        public createTime?: (google.protobuf.ITimestamp|null);

                        /** Deprecated. Use `drainage_info` instead. */
                        public drainageStatus: temporal.api.enums.v1.VersionDrainageStatus;

                        /**
                         * Information about workflow drainage to help the user determine when it is safe
                         * to decommission a Version. Not present while version is current or ramping
                         */
                        public drainageInfo?: (temporal.api.deployment.v1.IVersionDrainageInfo|null);

                        /**
                         * Unset if not current.
                         * (-- api-linter: core::0140::prepositions=disabled
                         * aip.dev/not-precedent: 'Since' captures the field semantics despite being a preposition. --)
                         */
                        public currentSinceTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Unset if not ramping. Updated when the version first starts ramping, not on each ramp change.
                         * (-- api-linter: core::0140::prepositions=disabled
                         * aip.dev/not-precedent: 'Since' captures the field semantics despite being a preposition. --)
                         */
                        public rampingSinceTime?: (google.protobuf.ITimestamp|null);

                        /** Last time `current_since_time`, `ramping_since_time, or `ramp_percentage` of this version changed. */
                        public routingUpdateTime?: (google.protobuf.ITimestamp|null);

                        /** Timestamp when this version first became current or ramping. */
                        public firstActivationTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Timestamp when this version last became current.
                         * Can be used to determine whether a version has ever been Current.
                         */
                        public lastCurrentTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Timestamp when this version last stopped being current or ramping.
                         * Cleared if the version becomes current or ramping again.
                         */
                        public lastDeactivationTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new WorkerDeploymentVersionSummary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WorkerDeploymentVersionSummary instance
                         */
                        public static create(properties?: temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary): temporal.api.deployment.v1.WorkerDeploymentInfo.WorkerDeploymentVersionSummary;

                        /**
                         * Encodes the specified WorkerDeploymentVersionSummary message. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentInfo.WorkerDeploymentVersionSummary.verify|verify} messages.
                         * @param message WorkerDeploymentVersionSummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WorkerDeploymentVersionSummary message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentInfo.WorkerDeploymentVersionSummary.verify|verify} messages.
                         * @param message WorkerDeploymentVersionSummary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.deployment.v1.WorkerDeploymentInfo.IWorkerDeploymentVersionSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WorkerDeploymentVersionSummary message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WorkerDeploymentVersionSummary
                         * @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): temporal.api.deployment.v1.WorkerDeploymentInfo.WorkerDeploymentVersionSummary;

                        /**
                         * Decodes a WorkerDeploymentVersionSummary message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WorkerDeploymentVersionSummary
                         * @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)): temporal.api.deployment.v1.WorkerDeploymentInfo.WorkerDeploymentVersionSummary;

                        /**
                         * Creates a WorkerDeploymentVersionSummary message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WorkerDeploymentVersionSummary
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.WorkerDeploymentInfo.WorkerDeploymentVersionSummary;

                        /**
                         * Creates a plain object from a WorkerDeploymentVersionSummary message. Also converts values to other types if specified.
                         * @param message WorkerDeploymentVersionSummary
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.deployment.v1.WorkerDeploymentInfo.WorkerDeploymentVersionSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WorkerDeploymentVersionSummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WorkerDeploymentVersionSummary
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a WorkerDeploymentVersion. */
                interface IWorkerDeploymentVersion {

                    /**
                     * A unique identifier for this Version within the Deployment it is a part of.
                     * Not necessarily unique within the namespace.
                     * The combination of `deployment_name` and `build_id` uniquely identifies this
                     * Version within the namespace, because Deployment names are unique within a namespace.
                     */
                    buildId?: (string|null);

                    /** Identifies the Worker Deployment this Version is part of. */
                    deploymentName?: (string|null);
                }

                /**
                 * A Worker Deployment Version (Version, for short) represents a
                 * version of workers within a Worker Deployment. (see documentation of WorkerDeploymentVersionInfo)
                 * Version records are created in Temporal server automatically when their
                 * first poller arrives to the server.
                 * Experimental. Worker Deployment Versions are experimental and might significantly change in the future.
                 */
                class WorkerDeploymentVersion implements IWorkerDeploymentVersion {

                    /**
                     * Constructs a new WorkerDeploymentVersion.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IWorkerDeploymentVersion);

                    /**
                     * A unique identifier for this Version within the Deployment it is a part of.
                     * Not necessarily unique within the namespace.
                     * The combination of `deployment_name` and `build_id` uniquely identifies this
                     * Version within the namespace, because Deployment names are unique within a namespace.
                     */
                    public buildId: string;

                    /** Identifies the Worker Deployment this Version is part of. */
                    public deploymentName: string;

                    /**
                     * Creates a new WorkerDeploymentVersion instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerDeploymentVersion instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IWorkerDeploymentVersion): temporal.api.deployment.v1.WorkerDeploymentVersion;

                    /**
                     * Encodes the specified WorkerDeploymentVersion message. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentVersion.verify|verify} messages.
                     * @param message WorkerDeploymentVersion message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IWorkerDeploymentVersion, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerDeploymentVersion message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.WorkerDeploymentVersion.verify|verify} messages.
                     * @param message WorkerDeploymentVersion message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IWorkerDeploymentVersion, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerDeploymentVersion message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerDeploymentVersion
                     * @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): temporal.api.deployment.v1.WorkerDeploymentVersion;

                    /**
                     * Decodes a WorkerDeploymentVersion message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerDeploymentVersion
                     * @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)): temporal.api.deployment.v1.WorkerDeploymentVersion;

                    /**
                     * Creates a WorkerDeploymentVersion message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerDeploymentVersion
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.WorkerDeploymentVersion;

                    /**
                     * Creates a plain object from a WorkerDeploymentVersion message. Also converts values to other types if specified.
                     * @param message WorkerDeploymentVersion
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.WorkerDeploymentVersion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerDeploymentVersion to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerDeploymentVersion
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a VersionMetadata. */
                interface IVersionMetadata {

                    /** Arbitrary key-values. */
                    entries?: ({ [k: string]: temporal.api.common.v1.IPayload }|null);
                }

                /** Represents a VersionMetadata. */
                class VersionMetadata implements IVersionMetadata {

                    /**
                     * Constructs a new VersionMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IVersionMetadata);

                    /** Arbitrary key-values. */
                    public entries: { [k: string]: temporal.api.common.v1.IPayload };

                    /**
                     * Creates a new VersionMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns VersionMetadata instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IVersionMetadata): temporal.api.deployment.v1.VersionMetadata;

                    /**
                     * Encodes the specified VersionMetadata message. Does not implicitly {@link temporal.api.deployment.v1.VersionMetadata.verify|verify} messages.
                     * @param message VersionMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IVersionMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified VersionMetadata message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.VersionMetadata.verify|verify} messages.
                     * @param message VersionMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IVersionMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a VersionMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns VersionMetadata
                     * @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): temporal.api.deployment.v1.VersionMetadata;

                    /**
                     * Decodes a VersionMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns VersionMetadata
                     * @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)): temporal.api.deployment.v1.VersionMetadata;

                    /**
                     * Creates a VersionMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns VersionMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.VersionMetadata;

                    /**
                     * Creates a plain object from a VersionMetadata message. Also converts values to other types if specified.
                     * @param message VersionMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.VersionMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this VersionMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for VersionMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RoutingConfig. */
                interface IRoutingConfig {

                    /**
                     * Specifies which Deployment Version should receive new workflow executions and tasks of
                     * existing unversioned or AutoUpgrade workflows.
                     * Nil value means no Version in this Deployment (except Ramping Version, if present) receives traffic other than tasks of previously Pinned workflows. In absence of a Current Version, remaining traffic after any ramp (if set)  goes to unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.).
                     * Note: Current Version is overridden by the Ramping Version for a portion of traffic when ramp percentage
                     * is non-zero (see `ramping_deployment_version` and `ramping_version_percentage`).
                     */
                    currentDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Deprecated. Use `current_deployment_version`. */
                    currentVersion?: (string|null);

                    /**
                     * When ramp percentage is non-zero, that portion of traffic is shifted from the Current Version to the Ramping Version.
                     * Must always be different from `current_deployment_version` unless both are nil.
                     * Nil value represents all the unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.)
                     * Note that it is possible to ramp from one Version to another Version, or from unversioned
                     * workers to a particular Version, or from a particular Version to unversioned workers.
                     */
                    rampingDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Deprecated. Use `ramping_deployment_version`. */
                    rampingVersion?: (string|null);

                    /**
                     * Percentage of tasks that are routed to the Ramping Version instead of the Current Version.
                     * Valid range: [0, 100]. A 100% value means the Ramping Version is receiving full traffic but
                     * not yet "promoted" to be the Current Version, likely due to pending validations.
                     * A 0% value means the Ramping Version is receiving no traffic.
                     */
                    rampingVersionPercentage?: (number|null);

                    /** Last time current version was changed. */
                    currentVersionChangedTime?: (google.protobuf.ITimestamp|null);

                    /** Last time ramping version was changed. Not updated if only the ramp percentage changes. */
                    rampingVersionChangedTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Last time ramping version percentage was changed.
                     * If ramping version is changed, this is also updated, even if the percentage stays the same.
                     */
                    rampingVersionPercentageChangedTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Monotonically increasing value which is incremented on every mutation
                     * to any field of this message to achieve eventual consistency between task queues and their partitions.
                     */
                    revisionNumber?: (Long|null);
                }

                /** Represents a RoutingConfig. */
                class RoutingConfig implements IRoutingConfig {

                    /**
                     * Constructs a new RoutingConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IRoutingConfig);

                    /**
                     * Specifies which Deployment Version should receive new workflow executions and tasks of
                     * existing unversioned or AutoUpgrade workflows.
                     * Nil value means no Version in this Deployment (except Ramping Version, if present) receives traffic other than tasks of previously Pinned workflows. In absence of a Current Version, remaining traffic after any ramp (if set)  goes to unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.).
                     * Note: Current Version is overridden by the Ramping Version for a portion of traffic when ramp percentage
                     * is non-zero (see `ramping_deployment_version` and `ramping_version_percentage`).
                     */
                    public currentDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Deprecated. Use `current_deployment_version`. */
                    public currentVersion: string;

                    /**
                     * When ramp percentage is non-zero, that portion of traffic is shifted from the Current Version to the Ramping Version.
                     * Must always be different from `current_deployment_version` unless both are nil.
                     * Nil value represents all the unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.)
                     * Note that it is possible to ramp from one Version to another Version, or from unversioned
                     * workers to a particular Version, or from a particular Version to unversioned workers.
                     */
                    public rampingDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Deprecated. Use `ramping_deployment_version`. */
                    public rampingVersion: string;

                    /**
                     * Percentage of tasks that are routed to the Ramping Version instead of the Current Version.
                     * Valid range: [0, 100]. A 100% value means the Ramping Version is receiving full traffic but
                     * not yet "promoted" to be the Current Version, likely due to pending validations.
                     * A 0% value means the Ramping Version is receiving no traffic.
                     */
                    public rampingVersionPercentage: number;

                    /** Last time current version was changed. */
                    public currentVersionChangedTime?: (google.protobuf.ITimestamp|null);

                    /** Last time ramping version was changed. Not updated if only the ramp percentage changes. */
                    public rampingVersionChangedTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Last time ramping version percentage was changed.
                     * If ramping version is changed, this is also updated, even if the percentage stays the same.
                     */
                    public rampingVersionPercentageChangedTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Monotonically increasing value which is incremented on every mutation
                     * to any field of this message to achieve eventual consistency between task queues and their partitions.
                     */
                    public revisionNumber: Long;

                    /**
                     * Creates a new RoutingConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RoutingConfig instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IRoutingConfig): temporal.api.deployment.v1.RoutingConfig;

                    /**
                     * Encodes the specified RoutingConfig message. Does not implicitly {@link temporal.api.deployment.v1.RoutingConfig.verify|verify} messages.
                     * @param message RoutingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IRoutingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RoutingConfig message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.RoutingConfig.verify|verify} messages.
                     * @param message RoutingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IRoutingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RoutingConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RoutingConfig
                     * @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): temporal.api.deployment.v1.RoutingConfig;

                    /**
                     * Decodes a RoutingConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RoutingConfig
                     * @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)): temporal.api.deployment.v1.RoutingConfig;

                    /**
                     * Creates a RoutingConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RoutingConfig
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.RoutingConfig;

                    /**
                     * Creates a plain object from a RoutingConfig message. Also converts values to other types if specified.
                     * @param message RoutingConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.RoutingConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RoutingConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RoutingConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an InheritedAutoUpgradeInfo. */
                interface IInheritedAutoUpgradeInfo {

                    /** The source deployment version of the parent/previous workflow. */
                    sourceDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** The revision number of the source deployment version of the parent/previous workflow. */
                    sourceDeploymentRevisionNumber?: (Long|null);
                }

                /**
                 * Used as part of WorkflowExecutionStartedEventAttributes to pass down the AutoUpgrade behavior and source deployment version
                 * to a workflow execution whose parent/previous workflow has an AutoUpgrade behavior.
                 */
                class InheritedAutoUpgradeInfo implements IInheritedAutoUpgradeInfo {

                    /**
                     * Constructs a new InheritedAutoUpgradeInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.deployment.v1.IInheritedAutoUpgradeInfo);

                    /** The source deployment version of the parent/previous workflow. */
                    public sourceDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** The revision number of the source deployment version of the parent/previous workflow. */
                    public sourceDeploymentRevisionNumber: Long;

                    /**
                     * Creates a new InheritedAutoUpgradeInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns InheritedAutoUpgradeInfo instance
                     */
                    public static create(properties?: temporal.api.deployment.v1.IInheritedAutoUpgradeInfo): temporal.api.deployment.v1.InheritedAutoUpgradeInfo;

                    /**
                     * Encodes the specified InheritedAutoUpgradeInfo message. Does not implicitly {@link temporal.api.deployment.v1.InheritedAutoUpgradeInfo.verify|verify} messages.
                     * @param message InheritedAutoUpgradeInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.deployment.v1.IInheritedAutoUpgradeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified InheritedAutoUpgradeInfo message, length delimited. Does not implicitly {@link temporal.api.deployment.v1.InheritedAutoUpgradeInfo.verify|verify} messages.
                     * @param message InheritedAutoUpgradeInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.deployment.v1.IInheritedAutoUpgradeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an InheritedAutoUpgradeInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns InheritedAutoUpgradeInfo
                     * @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): temporal.api.deployment.v1.InheritedAutoUpgradeInfo;

                    /**
                     * Decodes an InheritedAutoUpgradeInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns InheritedAutoUpgradeInfo
                     * @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)): temporal.api.deployment.v1.InheritedAutoUpgradeInfo;

                    /**
                     * Creates an InheritedAutoUpgradeInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns InheritedAutoUpgradeInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.deployment.v1.InheritedAutoUpgradeInfo;

                    /**
                     * Creates a plain object from an InheritedAutoUpgradeInfo message. Also converts values to other types if specified.
                     * @param message InheritedAutoUpgradeInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.deployment.v1.InheritedAutoUpgradeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this InheritedAutoUpgradeInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for InheritedAutoUpgradeInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace taskqueue. */
        namespace taskqueue {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a TaskQueue. */
                interface ITaskQueue {

                    /** TaskQueue name */
                    name?: (string|null);

                    /** Default: TASK_QUEUE_KIND_NORMAL. */
                    kind?: (temporal.api.enums.v1.TaskQueueKind|null);

                    /**
                     * Iff kind == TASK_QUEUE_KIND_STICKY, then this field contains the name of
                     * the normal task queue that the sticky worker is running on.
                     */
                    normalName?: (string|null);
                }

                /** See https://docs.temporal.io/docs/concepts/task-queues/ */
                class TaskQueue implements ITaskQueue {

                    /**
                     * Constructs a new TaskQueue.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskQueue);

                    /** TaskQueue name. */
                    public name: string;

                    /** Default: TASK_QUEUE_KIND_NORMAL. */
                    public kind: temporal.api.enums.v1.TaskQueueKind;

                    /**
                     * Iff kind == TASK_QUEUE_KIND_STICKY, then this field contains the name of
                     * the normal task queue that the sticky worker is running on.
                     */
                    public normalName: string;

                    /**
                     * Creates a new TaskQueue instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskQueue instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskQueue): temporal.api.taskqueue.v1.TaskQueue;

                    /**
                     * Encodes the specified TaskQueue message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueue.verify|verify} messages.
                     * @param message TaskQueue message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskQueue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskQueue message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueue.verify|verify} messages.
                     * @param message TaskQueue message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskQueue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskQueue message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskQueue
                     * @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): temporal.api.taskqueue.v1.TaskQueue;

                    /**
                     * Decodes a TaskQueue message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskQueue
                     * @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)): temporal.api.taskqueue.v1.TaskQueue;

                    /**
                     * Creates a TaskQueue message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskQueue
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskQueue;

                    /**
                     * Creates a plain object from a TaskQueue message. Also converts values to other types if specified.
                     * @param message TaskQueue
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskQueue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskQueue to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskQueue
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TaskQueueMetadata. */
                interface ITaskQueueMetadata {

                    /** Allows throttling dispatch of tasks from this queue */
                    maxTasksPerSecond?: (google.protobuf.IDoubleValue|null);
                }

                /** Only applies to activity task queues */
                class TaskQueueMetadata implements ITaskQueueMetadata {

                    /**
                     * Constructs a new TaskQueueMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskQueueMetadata);

                    /** Allows throttling dispatch of tasks from this queue */
                    public maxTasksPerSecond?: (google.protobuf.IDoubleValue|null);

                    /**
                     * Creates a new TaskQueueMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskQueueMetadata instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskQueueMetadata): temporal.api.taskqueue.v1.TaskQueueMetadata;

                    /**
                     * Encodes the specified TaskQueueMetadata message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueMetadata.verify|verify} messages.
                     * @param message TaskQueueMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskQueueMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskQueueMetadata message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueMetadata.verify|verify} messages.
                     * @param message TaskQueueMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskQueueMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskQueueMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskQueueMetadata
                     * @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): temporal.api.taskqueue.v1.TaskQueueMetadata;

                    /**
                     * Decodes a TaskQueueMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskQueueMetadata
                     * @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)): temporal.api.taskqueue.v1.TaskQueueMetadata;

                    /**
                     * Creates a TaskQueueMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskQueueMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskQueueMetadata;

                    /**
                     * Creates a plain object from a TaskQueueMetadata message. Also converts values to other types if specified.
                     * @param message TaskQueueMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskQueueMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskQueueMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskQueueMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TaskQueueVersioningInfo. */
                interface ITaskQueueVersioningInfo {

                    /**
                     * Specifies which Deployment Version should receive new workflow executions and tasks of
                     * existing unversioned or AutoUpgrade workflows.
                     * Nil value represents all the unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.)
                     * Note: Current Version is overridden by the Ramping Version for a portion of traffic when ramp percentage
                     * is non-zero (see `ramping_deployment_version` and `ramping_version_percentage`).
                     */
                    currentDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Deprecated. Use `current_deployment_version`. */
                    currentVersion?: (string|null);

                    /**
                     * When ramp percentage is non-zero, that portion of traffic is shifted from the Current Version to the Ramping Version.
                     * Must always be different from `current_deployment_version` unless both are nil.
                     * Nil value represents all the unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.)
                     * Note that it is possible to ramp from one Version to another Version, or from unversioned
                     * workers to a particular Version, or from a particular Version to unversioned workers.
                     */
                    rampingDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Deprecated. Use `ramping_deployment_version`. */
                    rampingVersion?: (string|null);

                    /**
                     * Percentage of tasks that are routed to the Ramping Version instead of the Current Version.
                     * Valid range: [0, 100]. A 100% value means the Ramping Version is receiving full traffic but
                     * not yet "promoted" to be the Current Version, likely due to pending validations.
                     * A 0% value means the Ramping Version is receiving no traffic.
                     */
                    rampingVersionPercentage?: (number|null);

                    /** Last time versioning information of this Task Queue changed. */
                    updateTime?: (google.protobuf.ITimestamp|null);
                }

                /** Experimental. Worker Deployments are experimental and might significantly change in the future. */
                class TaskQueueVersioningInfo implements ITaskQueueVersioningInfo {

                    /**
                     * Constructs a new TaskQueueVersioningInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskQueueVersioningInfo);

                    /**
                     * Specifies which Deployment Version should receive new workflow executions and tasks of
                     * existing unversioned or AutoUpgrade workflows.
                     * Nil value represents all the unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.)
                     * Note: Current Version is overridden by the Ramping Version for a portion of traffic when ramp percentage
                     * is non-zero (see `ramping_deployment_version` and `ramping_version_percentage`).
                     */
                    public currentDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Deprecated. Use `current_deployment_version`. */
                    public currentVersion: string;

                    /**
                     * When ramp percentage is non-zero, that portion of traffic is shifted from the Current Version to the Ramping Version.
                     * Must always be different from `current_deployment_version` unless both are nil.
                     * Nil value represents all the unversioned workers (those with `UNVERSIONED` (or unspecified) `WorkerVersioningMode`.)
                     * Note that it is possible to ramp from one Version to another Version, or from unversioned
                     * workers to a particular Version, or from a particular Version to unversioned workers.
                     */
                    public rampingDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** Deprecated. Use `ramping_deployment_version`. */
                    public rampingVersion: string;

                    /**
                     * Percentage of tasks that are routed to the Ramping Version instead of the Current Version.
                     * Valid range: [0, 100]. A 100% value means the Ramping Version is receiving full traffic but
                     * not yet "promoted" to be the Current Version, likely due to pending validations.
                     * A 0% value means the Ramping Version is receiving no traffic.
                     */
                    public rampingVersionPercentage: number;

                    /** Last time versioning information of this Task Queue changed. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new TaskQueueVersioningInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskQueueVersioningInfo instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskQueueVersioningInfo): temporal.api.taskqueue.v1.TaskQueueVersioningInfo;

                    /**
                     * Encodes the specified TaskQueueVersioningInfo message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueVersioningInfo.verify|verify} messages.
                     * @param message TaskQueueVersioningInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskQueueVersioningInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskQueueVersioningInfo message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueVersioningInfo.verify|verify} messages.
                     * @param message TaskQueueVersioningInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskQueueVersioningInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskQueueVersioningInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskQueueVersioningInfo
                     * @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): temporal.api.taskqueue.v1.TaskQueueVersioningInfo;

                    /**
                     * Decodes a TaskQueueVersioningInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskQueueVersioningInfo
                     * @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)): temporal.api.taskqueue.v1.TaskQueueVersioningInfo;

                    /**
                     * Creates a TaskQueueVersioningInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskQueueVersioningInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskQueueVersioningInfo;

                    /**
                     * Creates a plain object from a TaskQueueVersioningInfo message. Also converts values to other types if specified.
                     * @param message TaskQueueVersioningInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskQueueVersioningInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskQueueVersioningInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskQueueVersioningInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TaskQueueVersionSelection. */
                interface ITaskQueueVersionSelection {

                    /** Include specific Build IDs. */
                    buildIds?: (string[]|null);

                    /** Include the unversioned queue. */
                    unversioned?: (boolean|null);

                    /**
                     * Include all active versions. A version is considered active if, in the last few minutes,
                     * it has had new tasks or polls, or it has been the subject of certain task queue API calls.
                     */
                    allActive?: (boolean|null);
                }

                /** Used for specifying versions the caller is interested in. */
                class TaskQueueVersionSelection implements ITaskQueueVersionSelection {

                    /**
                     * Constructs a new TaskQueueVersionSelection.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskQueueVersionSelection);

                    /** Include specific Build IDs. */
                    public buildIds: string[];

                    /** Include the unversioned queue. */
                    public unversioned: boolean;

                    /**
                     * Include all active versions. A version is considered active if, in the last few minutes,
                     * it has had new tasks or polls, or it has been the subject of certain task queue API calls.
                     */
                    public allActive: boolean;

                    /**
                     * Creates a new TaskQueueVersionSelection instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskQueueVersionSelection instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskQueueVersionSelection): temporal.api.taskqueue.v1.TaskQueueVersionSelection;

                    /**
                     * Encodes the specified TaskQueueVersionSelection message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueVersionSelection.verify|verify} messages.
                     * @param message TaskQueueVersionSelection message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskQueueVersionSelection, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskQueueVersionSelection message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueVersionSelection.verify|verify} messages.
                     * @param message TaskQueueVersionSelection message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskQueueVersionSelection, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskQueueVersionSelection message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskQueueVersionSelection
                     * @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): temporal.api.taskqueue.v1.TaskQueueVersionSelection;

                    /**
                     * Decodes a TaskQueueVersionSelection message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskQueueVersionSelection
                     * @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)): temporal.api.taskqueue.v1.TaskQueueVersionSelection;

                    /**
                     * Creates a TaskQueueVersionSelection message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskQueueVersionSelection
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskQueueVersionSelection;

                    /**
                     * Creates a plain object from a TaskQueueVersionSelection message. Also converts values to other types if specified.
                     * @param message TaskQueueVersionSelection
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskQueueVersionSelection, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskQueueVersionSelection to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskQueueVersionSelection
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TaskQueueVersionInfo. */
                interface ITaskQueueVersionInfo {

                    /** Task Queue info per Task Type. Key is the numerical value of the temporal.api.enums.v1.TaskQueueType enum. */
                    typesInfo?: ({ [k: string]: temporal.api.taskqueue.v1.ITaskQueueTypeInfo }|null);

                    /**
                     * Task Reachability is eventually consistent; there may be a delay until it converges to the most
                     * accurate value but it is designed in a way to take the more conservative side until it converges.
                     * For example REACHABLE is more conservative than CLOSED_WORKFLOWS_ONLY.
                     *
                     * Note: future activities who inherit their workflow's Build ID but not its Task Queue will not be
                     * accounted for reachability as server cannot know if they'll happen as they do not use
                     * assignment rules of their Task Queue. Same goes for Child Workflows or Continue-As-New Workflows
                     * who inherit the parent/previous workflow's Build ID but not its Task Queue. In those cases, make
                     * sure to query reachability for the parent/previous workflow's Task Queue as well.
                     */
                    taskReachability?: (temporal.api.enums.v1.BuildIdTaskReachability|null);
                }

                /** Represents a TaskQueueVersionInfo. */
                class TaskQueueVersionInfo implements ITaskQueueVersionInfo {

                    /**
                     * Constructs a new TaskQueueVersionInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskQueueVersionInfo);

                    /** Task Queue info per Task Type. Key is the numerical value of the temporal.api.enums.v1.TaskQueueType enum. */
                    public typesInfo: { [k: string]: temporal.api.taskqueue.v1.ITaskQueueTypeInfo };

                    /**
                     * Task Reachability is eventually consistent; there may be a delay until it converges to the most
                     * accurate value but it is designed in a way to take the more conservative side until it converges.
                     * For example REACHABLE is more conservative than CLOSED_WORKFLOWS_ONLY.
                     *
                     * Note: future activities who inherit their workflow's Build ID but not its Task Queue will not be
                     * accounted for reachability as server cannot know if they'll happen as they do not use
                     * assignment rules of their Task Queue. Same goes for Child Workflows or Continue-As-New Workflows
                     * who inherit the parent/previous workflow's Build ID but not its Task Queue. In those cases, make
                     * sure to query reachability for the parent/previous workflow's Task Queue as well.
                     */
                    public taskReachability: temporal.api.enums.v1.BuildIdTaskReachability;

                    /**
                     * Creates a new TaskQueueVersionInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskQueueVersionInfo instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskQueueVersionInfo): temporal.api.taskqueue.v1.TaskQueueVersionInfo;

                    /**
                     * Encodes the specified TaskQueueVersionInfo message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueVersionInfo.verify|verify} messages.
                     * @param message TaskQueueVersionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskQueueVersionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskQueueVersionInfo message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueVersionInfo.verify|verify} messages.
                     * @param message TaskQueueVersionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskQueueVersionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskQueueVersionInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskQueueVersionInfo
                     * @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): temporal.api.taskqueue.v1.TaskQueueVersionInfo;

                    /**
                     * Decodes a TaskQueueVersionInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskQueueVersionInfo
                     * @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)): temporal.api.taskqueue.v1.TaskQueueVersionInfo;

                    /**
                     * Creates a TaskQueueVersionInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskQueueVersionInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskQueueVersionInfo;

                    /**
                     * Creates a plain object from a TaskQueueVersionInfo message. Also converts values to other types if specified.
                     * @param message TaskQueueVersionInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskQueueVersionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskQueueVersionInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskQueueVersionInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TaskQueueTypeInfo. */
                interface ITaskQueueTypeInfo {

                    /** Unversioned workers (with `useVersioning=false`) are reported in unversioned result even if they set a Build ID. */
                    pollers?: (temporal.api.taskqueue.v1.IPollerInfo[]|null);

                    /** TaskQueueTypeInfo stats */
                    stats?: (temporal.api.taskqueue.v1.ITaskQueueStats|null);
                }

                /** Represents a TaskQueueTypeInfo. */
                class TaskQueueTypeInfo implements ITaskQueueTypeInfo {

                    /**
                     * Constructs a new TaskQueueTypeInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskQueueTypeInfo);

                    /** Unversioned workers (with `useVersioning=false`) are reported in unversioned result even if they set a Build ID. */
                    public pollers: temporal.api.taskqueue.v1.IPollerInfo[];

                    /** TaskQueueTypeInfo stats. */
                    public stats?: (temporal.api.taskqueue.v1.ITaskQueueStats|null);

                    /**
                     * Creates a new TaskQueueTypeInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskQueueTypeInfo instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskQueueTypeInfo): temporal.api.taskqueue.v1.TaskQueueTypeInfo;

                    /**
                     * Encodes the specified TaskQueueTypeInfo message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueTypeInfo.verify|verify} messages.
                     * @param message TaskQueueTypeInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskQueueTypeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskQueueTypeInfo message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueTypeInfo.verify|verify} messages.
                     * @param message TaskQueueTypeInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskQueueTypeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskQueueTypeInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskQueueTypeInfo
                     * @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): temporal.api.taskqueue.v1.TaskQueueTypeInfo;

                    /**
                     * Decodes a TaskQueueTypeInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskQueueTypeInfo
                     * @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)): temporal.api.taskqueue.v1.TaskQueueTypeInfo;

                    /**
                     * Creates a TaskQueueTypeInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskQueueTypeInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskQueueTypeInfo;

                    /**
                     * Creates a plain object from a TaskQueueTypeInfo message. Also converts values to other types if specified.
                     * @param message TaskQueueTypeInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskQueueTypeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskQueueTypeInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskQueueTypeInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TaskQueueStats. */
                interface ITaskQueueStats {

                    /**
                     * The approximate number of tasks backlogged in this task queue. May count expired tasks but eventually
                     * converges to the right value. Can be relied upon for scaling decisions.
                     *
                     * Special note for workflow task queue type: this metric does not count sticky queue tasks. However, because
                     * those tasks only remain valid for a few seconds, the inaccuracy becomes less significant as the backlog size
                     * grows.
                     */
                    approximateBacklogCount?: (Long|null);

                    /**
                     * Approximate age of the oldest task in the backlog based on the creation time of the task at the head of
                     * the queue. Can be relied upon for scaling decisions.
                     *
                     * Special note for workflow task queue type: this metric does not count sticky queue tasks. However, because
                     * those tasks only remain valid for a few seconds, they should not affect the result when backlog is older than
                     * few seconds.
                     */
                    approximateBacklogAge?: (google.protobuf.IDuration|null);

                    /**
                     * The approximate tasks per second added to the task queue, averaging the last 30 seconds. These includes tasks
                     * whether or not they were added to/dispatched from the backlog or they were dispatched immediately without going
                     * to the backlog (sync-matched).
                     *
                     * The difference between `tasks_add_rate` and `tasks_dispatch_rate` is a reliable metric for the rate at which
                     * backlog grows/shrinks.
                     *
                     * Note: the actual tasks delivered to the workers may significantly be higher than the numbers reported by
                     * tasks_add_rate, because:
                     * - Tasks can be sent to workers without going to the task queue. This is called Eager dispatch. Eager dispatch is
                     * enable for activities by default in the latest SDKs.
                     * - Tasks going to Sticky queue are not accounted for. Note that, typically, only the first workflow task of each
                     * workflow goes to a normal queue, and the rest workflow tasks go to the Sticky queue associated with a specific
                     * worker instance.
                     */
                    tasksAddRate?: (number|null);

                    /**
                     * The approximate tasks per second dispatched from the task queue, averaging the last 30 seconds. These includes
                     * tasks whether or not they were added to/dispatched from the backlog or they were dispatched immediately without
                     * going to the backlog (sync-matched).
                     *
                     * The difference between `tasks_add_rate` and `tasks_dispatch_rate` is a reliable metric for the rate at which
                     * backlog grows/shrinks.
                     *
                     * Note: the actual tasks delivered to the workers may significantly be higher than the numbers reported by
                     * tasks_dispatch_rate, because:
                     * - Tasks can be sent to workers without going to the task queue. This is called Eager dispatch. Eager dispatch is
                     * enable for activities by default in the latest SDKs.
                     * - Tasks going to Sticky queue are not accounted for. Note that, typically, only the first workflow task of each
                     * workflow goes to a normal queue, and the rest workflow tasks go to the Sticky queue associated with a specific
                     * worker instance.
                     */
                    tasksDispatchRate?: (number|null);
                }

                /**
                 * TaskQueueStats contains statistics about task queue backlog and activity.
                 *
                 * For workflow task queue type, this result is partial because tasks sent to sticky queues are not included. Read
                 * comments above each metric to understand the impact of sticky queue exclusion on that metric accuracy.
                 */
                class TaskQueueStats implements ITaskQueueStats {

                    /**
                     * Constructs a new TaskQueueStats.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskQueueStats);

                    /**
                     * The approximate number of tasks backlogged in this task queue. May count expired tasks but eventually
                     * converges to the right value. Can be relied upon for scaling decisions.
                     *
                     * Special note for workflow task queue type: this metric does not count sticky queue tasks. However, because
                     * those tasks only remain valid for a few seconds, the inaccuracy becomes less significant as the backlog size
                     * grows.
                     */
                    public approximateBacklogCount: Long;

                    /**
                     * Approximate age of the oldest task in the backlog based on the creation time of the task at the head of
                     * the queue. Can be relied upon for scaling decisions.
                     *
                     * Special note for workflow task queue type: this metric does not count sticky queue tasks. However, because
                     * those tasks only remain valid for a few seconds, they should not affect the result when backlog is older than
                     * few seconds.
                     */
                    public approximateBacklogAge?: (google.protobuf.IDuration|null);

                    /**
                     * The approximate tasks per second added to the task queue, averaging the last 30 seconds. These includes tasks
                     * whether or not they were added to/dispatched from the backlog or they were dispatched immediately without going
                     * to the backlog (sync-matched).
                     *
                     * The difference between `tasks_add_rate` and `tasks_dispatch_rate` is a reliable metric for the rate at which
                     * backlog grows/shrinks.
                     *
                     * Note: the actual tasks delivered to the workers may significantly be higher than the numbers reported by
                     * tasks_add_rate, because:
                     * - Tasks can be sent to workers without going to the task queue. This is called Eager dispatch. Eager dispatch is
                     * enable for activities by default in the latest SDKs.
                     * - Tasks going to Sticky queue are not accounted for. Note that, typically, only the first workflow task of each
                     * workflow goes to a normal queue, and the rest workflow tasks go to the Sticky queue associated with a specific
                     * worker instance.
                     */
                    public tasksAddRate: number;

                    /**
                     * The approximate tasks per second dispatched from the task queue, averaging the last 30 seconds. These includes
                     * tasks whether or not they were added to/dispatched from the backlog or they were dispatched immediately without
                     * going to the backlog (sync-matched).
                     *
                     * The difference between `tasks_add_rate` and `tasks_dispatch_rate` is a reliable metric for the rate at which
                     * backlog grows/shrinks.
                     *
                     * Note: the actual tasks delivered to the workers may significantly be higher than the numbers reported by
                     * tasks_dispatch_rate, because:
                     * - Tasks can be sent to workers without going to the task queue. This is called Eager dispatch. Eager dispatch is
                     * enable for activities by default in the latest SDKs.
                     * - Tasks going to Sticky queue are not accounted for. Note that, typically, only the first workflow task of each
                     * workflow goes to a normal queue, and the rest workflow tasks go to the Sticky queue associated with a specific
                     * worker instance.
                     */
                    public tasksDispatchRate: number;

                    /**
                     * Creates a new TaskQueueStats instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskQueueStats instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskQueueStats): temporal.api.taskqueue.v1.TaskQueueStats;

                    /**
                     * Encodes the specified TaskQueueStats message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueStats.verify|verify} messages.
                     * @param message TaskQueueStats message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskQueueStats, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskQueueStats message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueStats.verify|verify} messages.
                     * @param message TaskQueueStats message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskQueueStats, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskQueueStats message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskQueueStats
                     * @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): temporal.api.taskqueue.v1.TaskQueueStats;

                    /**
                     * Decodes a TaskQueueStats message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskQueueStats
                     * @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)): temporal.api.taskqueue.v1.TaskQueueStats;

                    /**
                     * Creates a TaskQueueStats message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskQueueStats
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskQueueStats;

                    /**
                     * Creates a plain object from a TaskQueueStats message. Also converts values to other types if specified.
                     * @param message TaskQueueStats
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskQueueStats, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskQueueStats to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskQueueStats
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TaskQueueStatus. */
                interface ITaskQueueStatus {

                    /** TaskQueueStatus backlogCountHint */
                    backlogCountHint?: (Long|null);

                    /** TaskQueueStatus readLevel */
                    readLevel?: (Long|null);

                    /** TaskQueueStatus ackLevel */
                    ackLevel?: (Long|null);

                    /** TaskQueueStatus ratePerSecond */
                    ratePerSecond?: (number|null);

                    /** TaskQueueStatus taskIdBlock */
                    taskIdBlock?: (temporal.api.taskqueue.v1.ITaskIdBlock|null);
                }

                /** Deprecated. Use `InternalTaskQueueStatus`. This is kept until `DescribeTaskQueue` supports legacy behavior. */
                class TaskQueueStatus implements ITaskQueueStatus {

                    /**
                     * Constructs a new TaskQueueStatus.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskQueueStatus);

                    /** TaskQueueStatus backlogCountHint. */
                    public backlogCountHint: Long;

                    /** TaskQueueStatus readLevel. */
                    public readLevel: Long;

                    /** TaskQueueStatus ackLevel. */
                    public ackLevel: Long;

                    /** TaskQueueStatus ratePerSecond. */
                    public ratePerSecond: number;

                    /** TaskQueueStatus taskIdBlock. */
                    public taskIdBlock?: (temporal.api.taskqueue.v1.ITaskIdBlock|null);

                    /**
                     * Creates a new TaskQueueStatus instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskQueueStatus instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskQueueStatus): temporal.api.taskqueue.v1.TaskQueueStatus;

                    /**
                     * Encodes the specified TaskQueueStatus message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueStatus.verify|verify} messages.
                     * @param message TaskQueueStatus message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskQueueStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskQueueStatus message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueStatus.verify|verify} messages.
                     * @param message TaskQueueStatus message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskQueueStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskQueueStatus message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskQueueStatus
                     * @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): temporal.api.taskqueue.v1.TaskQueueStatus;

                    /**
                     * Decodes a TaskQueueStatus message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskQueueStatus
                     * @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)): temporal.api.taskqueue.v1.TaskQueueStatus;

                    /**
                     * Creates a TaskQueueStatus message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskQueueStatus
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskQueueStatus;

                    /**
                     * Creates a plain object from a TaskQueueStatus message. Also converts values to other types if specified.
                     * @param message TaskQueueStatus
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskQueueStatus, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskQueueStatus to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskQueueStatus
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TaskIdBlock. */
                interface ITaskIdBlock {

                    /** TaskIdBlock startId */
                    startId?: (Long|null);

                    /** TaskIdBlock endId */
                    endId?: (Long|null);
                }

                /** Represents a TaskIdBlock. */
                class TaskIdBlock implements ITaskIdBlock {

                    /**
                     * Constructs a new TaskIdBlock.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskIdBlock);

                    /** TaskIdBlock startId. */
                    public startId: Long;

                    /** TaskIdBlock endId. */
                    public endId: Long;

                    /**
                     * Creates a new TaskIdBlock instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskIdBlock instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskIdBlock): temporal.api.taskqueue.v1.TaskIdBlock;

                    /**
                     * Encodes the specified TaskIdBlock message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskIdBlock.verify|verify} messages.
                     * @param message TaskIdBlock message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskIdBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskIdBlock message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskIdBlock.verify|verify} messages.
                     * @param message TaskIdBlock message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskIdBlock, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskIdBlock message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskIdBlock
                     * @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): temporal.api.taskqueue.v1.TaskIdBlock;

                    /**
                     * Decodes a TaskIdBlock message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskIdBlock
                     * @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)): temporal.api.taskqueue.v1.TaskIdBlock;

                    /**
                     * Creates a TaskIdBlock message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskIdBlock
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskIdBlock;

                    /**
                     * Creates a plain object from a TaskIdBlock message. Also converts values to other types if specified.
                     * @param message TaskIdBlock
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskIdBlock, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskIdBlock to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskIdBlock
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TaskQueuePartitionMetadata. */
                interface ITaskQueuePartitionMetadata {

                    /** TaskQueuePartitionMetadata key */
                    key?: (string|null);

                    /** TaskQueuePartitionMetadata ownerHostName */
                    ownerHostName?: (string|null);
                }

                /** Represents a TaskQueuePartitionMetadata. */
                class TaskQueuePartitionMetadata implements ITaskQueuePartitionMetadata {

                    /**
                     * Constructs a new TaskQueuePartitionMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskQueuePartitionMetadata);

                    /** TaskQueuePartitionMetadata key. */
                    public key: string;

                    /** TaskQueuePartitionMetadata ownerHostName. */
                    public ownerHostName: string;

                    /**
                     * Creates a new TaskQueuePartitionMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskQueuePartitionMetadata instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskQueuePartitionMetadata): temporal.api.taskqueue.v1.TaskQueuePartitionMetadata;

                    /**
                     * Encodes the specified TaskQueuePartitionMetadata message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueuePartitionMetadata.verify|verify} messages.
                     * @param message TaskQueuePartitionMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskQueuePartitionMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskQueuePartitionMetadata message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueuePartitionMetadata.verify|verify} messages.
                     * @param message TaskQueuePartitionMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskQueuePartitionMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskQueuePartitionMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskQueuePartitionMetadata
                     * @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): temporal.api.taskqueue.v1.TaskQueuePartitionMetadata;

                    /**
                     * Decodes a TaskQueuePartitionMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskQueuePartitionMetadata
                     * @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)): temporal.api.taskqueue.v1.TaskQueuePartitionMetadata;

                    /**
                     * Creates a TaskQueuePartitionMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskQueuePartitionMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskQueuePartitionMetadata;

                    /**
                     * Creates a plain object from a TaskQueuePartitionMetadata message. Also converts values to other types if specified.
                     * @param message TaskQueuePartitionMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskQueuePartitionMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskQueuePartitionMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskQueuePartitionMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollerInfo. */
                interface IPollerInfo {

                    /** PollerInfo lastAccessTime */
                    lastAccessTime?: (google.protobuf.ITimestamp|null);

                    /** PollerInfo identity */
                    identity?: (string|null);

                    /** PollerInfo ratePerSecond */
                    ratePerSecond?: (number|null);

                    /**
                     * If a worker has opted into the worker versioning feature while polling, its capabilities will
                     * appear here.
                     * Deprecated. Replaced by deployment_options.
                     */
                    workerVersionCapabilities?: (temporal.api.common.v1.IWorkerVersionCapabilities|null);

                    /** Worker deployment options that SDK sent to server. */
                    deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);
                }

                /** Represents a PollerInfo. */
                class PollerInfo implements IPollerInfo {

                    /**
                     * Constructs a new PollerInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.IPollerInfo);

                    /** PollerInfo lastAccessTime. */
                    public lastAccessTime?: (google.protobuf.ITimestamp|null);

                    /** PollerInfo identity. */
                    public identity: string;

                    /** PollerInfo ratePerSecond. */
                    public ratePerSecond: number;

                    /**
                     * If a worker has opted into the worker versioning feature while polling, its capabilities will
                     * appear here.
                     * Deprecated. Replaced by deployment_options.
                     */
                    public workerVersionCapabilities?: (temporal.api.common.v1.IWorkerVersionCapabilities|null);

                    /** Worker deployment options that SDK sent to server. */
                    public deploymentOptions?: (temporal.api.deployment.v1.IWorkerDeploymentOptions|null);

                    /**
                     * Creates a new PollerInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollerInfo instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.IPollerInfo): temporal.api.taskqueue.v1.PollerInfo;

                    /**
                     * Encodes the specified PollerInfo message. Does not implicitly {@link temporal.api.taskqueue.v1.PollerInfo.verify|verify} messages.
                     * @param message PollerInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.IPollerInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollerInfo message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.PollerInfo.verify|verify} messages.
                     * @param message PollerInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.IPollerInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollerInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollerInfo
                     * @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): temporal.api.taskqueue.v1.PollerInfo;

                    /**
                     * Decodes a PollerInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollerInfo
                     * @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)): temporal.api.taskqueue.v1.PollerInfo;

                    /**
                     * Creates a PollerInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollerInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.PollerInfo;

                    /**
                     * Creates a plain object from a PollerInfo message. Also converts values to other types if specified.
                     * @param message PollerInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.PollerInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollerInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollerInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StickyExecutionAttributes. */
                interface IStickyExecutionAttributes {

                    /** StickyExecutionAttributes workerTaskQueue */
                    workerTaskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToStartTimeout?: (google.protobuf.IDuration|null);
                }

                /** Represents a StickyExecutionAttributes. */
                class StickyExecutionAttributes implements IStickyExecutionAttributes {

                    /**
                     * Constructs a new StickyExecutionAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.IStickyExecutionAttributes);

                    /** StickyExecutionAttributes workerTaskQueue. */
                    public workerTaskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Creates a new StickyExecutionAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StickyExecutionAttributes instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.IStickyExecutionAttributes): temporal.api.taskqueue.v1.StickyExecutionAttributes;

                    /**
                     * Encodes the specified StickyExecutionAttributes message. Does not implicitly {@link temporal.api.taskqueue.v1.StickyExecutionAttributes.verify|verify} messages.
                     * @param message StickyExecutionAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.IStickyExecutionAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StickyExecutionAttributes message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.StickyExecutionAttributes.verify|verify} messages.
                     * @param message StickyExecutionAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.IStickyExecutionAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StickyExecutionAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StickyExecutionAttributes
                     * @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): temporal.api.taskqueue.v1.StickyExecutionAttributes;

                    /**
                     * Decodes a StickyExecutionAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StickyExecutionAttributes
                     * @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)): temporal.api.taskqueue.v1.StickyExecutionAttributes;

                    /**
                     * Creates a StickyExecutionAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StickyExecutionAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.StickyExecutionAttributes;

                    /**
                     * Creates a plain object from a StickyExecutionAttributes message. Also converts values to other types if specified.
                     * @param message StickyExecutionAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.StickyExecutionAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StickyExecutionAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StickyExecutionAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CompatibleVersionSet. */
                interface ICompatibleVersionSet {

                    /** All the compatible versions, unordered, except for the last element, which is considered the set "default". */
                    buildIds?: (string[]|null);
                }

                /**
                 * Used by the worker versioning APIs, represents an unordered set of one or more versions which are
                 * considered to be compatible with each other. Currently the versions are always worker build IDs.
                 */
                class CompatibleVersionSet implements ICompatibleVersionSet {

                    /**
                     * Constructs a new CompatibleVersionSet.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ICompatibleVersionSet);

                    /** All the compatible versions, unordered, except for the last element, which is considered the set "default". */
                    public buildIds: string[];

                    /**
                     * Creates a new CompatibleVersionSet instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompatibleVersionSet instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ICompatibleVersionSet): temporal.api.taskqueue.v1.CompatibleVersionSet;

                    /**
                     * Encodes the specified CompatibleVersionSet message. Does not implicitly {@link temporal.api.taskqueue.v1.CompatibleVersionSet.verify|verify} messages.
                     * @param message CompatibleVersionSet message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ICompatibleVersionSet, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompatibleVersionSet message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.CompatibleVersionSet.verify|verify} messages.
                     * @param message CompatibleVersionSet message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ICompatibleVersionSet, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompatibleVersionSet message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompatibleVersionSet
                     * @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): temporal.api.taskqueue.v1.CompatibleVersionSet;

                    /**
                     * Decodes a CompatibleVersionSet message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompatibleVersionSet
                     * @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)): temporal.api.taskqueue.v1.CompatibleVersionSet;

                    /**
                     * Creates a CompatibleVersionSet message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompatibleVersionSet
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.CompatibleVersionSet;

                    /**
                     * Creates a plain object from a CompatibleVersionSet message. Also converts values to other types if specified.
                     * @param message CompatibleVersionSet
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.CompatibleVersionSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompatibleVersionSet to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompatibleVersionSet
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TaskQueueReachability. */
                interface ITaskQueueReachability {

                    /** TaskQueueReachability taskQueue */
                    taskQueue?: (string|null);

                    /**
                     * Task reachability for a worker in a single task queue.
                     * See the TaskReachability docstring for information about each enum variant.
                     * If reachability is empty, this worker is considered unreachable in this task queue.
                     */
                    reachability?: (temporal.api.enums.v1.TaskReachability[]|null);
                }

                /** Reachability of tasks for a worker on a single task queue. */
                class TaskQueueReachability implements ITaskQueueReachability {

                    /**
                     * Constructs a new TaskQueueReachability.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskQueueReachability);

                    /** TaskQueueReachability taskQueue. */
                    public taskQueue: string;

                    /**
                     * Task reachability for a worker in a single task queue.
                     * See the TaskReachability docstring for information about each enum variant.
                     * If reachability is empty, this worker is considered unreachable in this task queue.
                     */
                    public reachability: temporal.api.enums.v1.TaskReachability[];

                    /**
                     * Creates a new TaskQueueReachability instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskQueueReachability instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskQueueReachability): temporal.api.taskqueue.v1.TaskQueueReachability;

                    /**
                     * Encodes the specified TaskQueueReachability message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueReachability.verify|verify} messages.
                     * @param message TaskQueueReachability message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskQueueReachability, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskQueueReachability message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueReachability.verify|verify} messages.
                     * @param message TaskQueueReachability message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskQueueReachability, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskQueueReachability message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskQueueReachability
                     * @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): temporal.api.taskqueue.v1.TaskQueueReachability;

                    /**
                     * Decodes a TaskQueueReachability message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskQueueReachability
                     * @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)): temporal.api.taskqueue.v1.TaskQueueReachability;

                    /**
                     * Creates a TaskQueueReachability message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskQueueReachability
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskQueueReachability;

                    /**
                     * Creates a plain object from a TaskQueueReachability message. Also converts values to other types if specified.
                     * @param message TaskQueueReachability
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskQueueReachability, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskQueueReachability to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskQueueReachability
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BuildIdReachability. */
                interface IBuildIdReachability {

                    /** A build id or empty if unversioned. */
                    buildId?: (string|null);

                    /** Reachability per task queue. */
                    taskQueueReachability?: (temporal.api.taskqueue.v1.ITaskQueueReachability[]|null);
                }

                /** Reachability of tasks for a worker by build id, in one or more task queues. */
                class BuildIdReachability implements IBuildIdReachability {

                    /**
                     * Constructs a new BuildIdReachability.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.IBuildIdReachability);

                    /** A build id or empty if unversioned. */
                    public buildId: string;

                    /** Reachability per task queue. */
                    public taskQueueReachability: temporal.api.taskqueue.v1.ITaskQueueReachability[];

                    /**
                     * Creates a new BuildIdReachability instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BuildIdReachability instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.IBuildIdReachability): temporal.api.taskqueue.v1.BuildIdReachability;

                    /**
                     * Encodes the specified BuildIdReachability message. Does not implicitly {@link temporal.api.taskqueue.v1.BuildIdReachability.verify|verify} messages.
                     * @param message BuildIdReachability message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.IBuildIdReachability, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BuildIdReachability message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.BuildIdReachability.verify|verify} messages.
                     * @param message BuildIdReachability message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.IBuildIdReachability, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BuildIdReachability message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BuildIdReachability
                     * @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): temporal.api.taskqueue.v1.BuildIdReachability;

                    /**
                     * Decodes a BuildIdReachability message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BuildIdReachability
                     * @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)): temporal.api.taskqueue.v1.BuildIdReachability;

                    /**
                     * Creates a BuildIdReachability message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BuildIdReachability
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.BuildIdReachability;

                    /**
                     * Creates a plain object from a BuildIdReachability message. Also converts values to other types if specified.
                     * @param message BuildIdReachability
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.BuildIdReachability, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BuildIdReachability to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BuildIdReachability
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RampByPercentage. */
                interface IRampByPercentage {

                    /** Acceptable range is [0,100). */
                    rampPercentage?: (number|null);
                }

                /** Represents a RampByPercentage. */
                class RampByPercentage implements IRampByPercentage {

                    /**
                     * Constructs a new RampByPercentage.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.IRampByPercentage);

                    /** Acceptable range is [0,100). */
                    public rampPercentage: number;

                    /**
                     * Creates a new RampByPercentage instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RampByPercentage instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.IRampByPercentage): temporal.api.taskqueue.v1.RampByPercentage;

                    /**
                     * Encodes the specified RampByPercentage message. Does not implicitly {@link temporal.api.taskqueue.v1.RampByPercentage.verify|verify} messages.
                     * @param message RampByPercentage message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.IRampByPercentage, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RampByPercentage message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.RampByPercentage.verify|verify} messages.
                     * @param message RampByPercentage message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.IRampByPercentage, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RampByPercentage message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RampByPercentage
                     * @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): temporal.api.taskqueue.v1.RampByPercentage;

                    /**
                     * Decodes a RampByPercentage message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RampByPercentage
                     * @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)): temporal.api.taskqueue.v1.RampByPercentage;

                    /**
                     * Creates a RampByPercentage message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RampByPercentage
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.RampByPercentage;

                    /**
                     * Creates a plain object from a RampByPercentage message. Also converts values to other types if specified.
                     * @param message RampByPercentage
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.RampByPercentage, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RampByPercentage to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RampByPercentage
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BuildIdAssignmentRule. */
                interface IBuildIdAssignmentRule {

                    /** BuildIdAssignmentRule targetBuildId */
                    targetBuildId?: (string|null);

                    /**
                     * This ramp is useful for gradual Blue/Green deployments (and similar)
                     * where you want to send a certain portion of the traffic to the target
                     * Build ID.
                     */
                    percentageRamp?: (temporal.api.taskqueue.v1.IRampByPercentage|null);
                }

                /**
                 * Assignment rules are applied to *new* Workflow and Activity executions at
                 * schedule time to assign them to a Build ID.
                 *
                 * Assignment rules will not be used in the following cases:
                 * - Child Workflows or Continue-As-New Executions who inherit their
                 * parent/previous Workflow's assigned Build ID (by setting the
                 * `inherit_build_id` flag - default behavior in SDKs when the same Task Queue
                 * is used.)
                 * - An Activity that inherits the assigned Build ID of its Workflow (by
                 * setting the `use_workflow_build_id` flag - default behavior in SDKs
                 * when the same Task Queue is used.)
                 *
                 * In absence of (applicable) redirect rules (`CompatibleBuildIdRedirectRule`s)
                 * the task will be dispatched to Workers of the Build ID determined by the
                 * assignment rules (or inherited). Otherwise, the final Build ID will be
                 * determined by the redirect rules.
                 *
                 * Once a Workflow completes its first Workflow Task in a particular Build ID it
                 * stays in that Build ID regardless of changes to assignment rules. Redirect
                 * rules can be used to move the workflow to another compatible Build ID.
                 *
                 * When using Worker Versioning on a Task Queue, in the steady state,
                 * there should typically be a single assignment rule to send all new executions
                 * to the latest Build ID. Existence of at least one such "unconditional"
                 * rule at all times is enforces by the system, unless the `force` flag is used
                 * by the user when replacing/deleting these rules (for exceptional cases).
                 *
                 * During a deployment, one or more additional rules can be added to assign a
                 * subset of the tasks to a new Build ID based on a "ramp percentage".
                 *
                 * When there are multiple assignment rules for a Task Queue, the rules are
                 * evaluated in order, starting from index 0. The first applicable rule will be
                 * applied and the rest will be ignored.
                 *
                 * In the event that no assignment rule is applicable on a task (or the Task
                 * Queue is simply not versioned), the tasks will be dispatched to an
                 * unversioned Worker.
                 */
                class BuildIdAssignmentRule implements IBuildIdAssignmentRule {

                    /**
                     * Constructs a new BuildIdAssignmentRule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.IBuildIdAssignmentRule);

                    /** BuildIdAssignmentRule targetBuildId. */
                    public targetBuildId: string;

                    /**
                     * This ramp is useful for gradual Blue/Green deployments (and similar)
                     * where you want to send a certain portion of the traffic to the target
                     * Build ID.
                     */
                    public percentageRamp?: (temporal.api.taskqueue.v1.IRampByPercentage|null);

                    /**
                     * If a ramp is provided, this rule will be applied only to a sample of
                     * tasks according to the provided percentage.
                     * This option can be used only on "terminal" Build IDs (the ones not used
                     * as source in any redirect rules).
                     */
                    public ramp?: "percentageRamp";

                    /**
                     * Creates a new BuildIdAssignmentRule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BuildIdAssignmentRule instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.IBuildIdAssignmentRule): temporal.api.taskqueue.v1.BuildIdAssignmentRule;

                    /**
                     * Encodes the specified BuildIdAssignmentRule message. Does not implicitly {@link temporal.api.taskqueue.v1.BuildIdAssignmentRule.verify|verify} messages.
                     * @param message BuildIdAssignmentRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.IBuildIdAssignmentRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BuildIdAssignmentRule message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.BuildIdAssignmentRule.verify|verify} messages.
                     * @param message BuildIdAssignmentRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.IBuildIdAssignmentRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BuildIdAssignmentRule message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BuildIdAssignmentRule
                     * @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): temporal.api.taskqueue.v1.BuildIdAssignmentRule;

                    /**
                     * Decodes a BuildIdAssignmentRule message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BuildIdAssignmentRule
                     * @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)): temporal.api.taskqueue.v1.BuildIdAssignmentRule;

                    /**
                     * Creates a BuildIdAssignmentRule message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BuildIdAssignmentRule
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.BuildIdAssignmentRule;

                    /**
                     * Creates a plain object from a BuildIdAssignmentRule message. Also converts values to other types if specified.
                     * @param message BuildIdAssignmentRule
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.BuildIdAssignmentRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BuildIdAssignmentRule to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BuildIdAssignmentRule
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CompatibleBuildIdRedirectRule. */
                interface ICompatibleBuildIdRedirectRule {

                    /** CompatibleBuildIdRedirectRule sourceBuildId */
                    sourceBuildId?: (string|null);

                    /**
                     * Target Build ID must be compatible with the Source Build ID; that is it
                     * must be able to process event histories made by the Source Build ID by
                     * using [Patching](https://docs.temporal.io/workflows#patching) or other
                     * means.
                     */
                    targetBuildId?: (string|null);
                }

                /**
                 * These rules apply to tasks assigned to a particular Build ID
                 * (`source_build_id`) to redirect them to another *compatible* Build ID
                 * (`target_build_id`).
                 *
                 * It is user's responsibility to ensure that the target Build ID is compatible
                 * with the source Build ID (e.g. by using the Patching API).
                 *
                 * Most deployments are not expected to need these rules, however following
                 * situations can greatly benefit from redirects:
                 * - Need to move long-running Workflow Executions from an old Build ID to a
                 * newer one.
                 * - Need to hotfix some broken or stuck Workflow Executions.
                 *
                 * In steady state, redirect rules are beneficial when dealing with old
                 * Executions ran on now-decommissioned Build IDs:
                 * - To redirecting the Workflow Queries to the current (compatible) Build ID.
                 * - To be able to Reset an old Execution so it can run on the current
                 * (compatible) Build ID.
                 *
                 * Redirect rules can be chained.
                 */
                class CompatibleBuildIdRedirectRule implements ICompatibleBuildIdRedirectRule {

                    /**
                     * Constructs a new CompatibleBuildIdRedirectRule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ICompatibleBuildIdRedirectRule);

                    /** CompatibleBuildIdRedirectRule sourceBuildId. */
                    public sourceBuildId: string;

                    /**
                     * Target Build ID must be compatible with the Source Build ID; that is it
                     * must be able to process event histories made by the Source Build ID by
                     * using [Patching](https://docs.temporal.io/workflows#patching) or other
                     * means.
                     */
                    public targetBuildId: string;

                    /**
                     * Creates a new CompatibleBuildIdRedirectRule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompatibleBuildIdRedirectRule instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ICompatibleBuildIdRedirectRule): temporal.api.taskqueue.v1.CompatibleBuildIdRedirectRule;

                    /**
                     * Encodes the specified CompatibleBuildIdRedirectRule message. Does not implicitly {@link temporal.api.taskqueue.v1.CompatibleBuildIdRedirectRule.verify|verify} messages.
                     * @param message CompatibleBuildIdRedirectRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ICompatibleBuildIdRedirectRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompatibleBuildIdRedirectRule message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.CompatibleBuildIdRedirectRule.verify|verify} messages.
                     * @param message CompatibleBuildIdRedirectRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ICompatibleBuildIdRedirectRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompatibleBuildIdRedirectRule message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompatibleBuildIdRedirectRule
                     * @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): temporal.api.taskqueue.v1.CompatibleBuildIdRedirectRule;

                    /**
                     * Decodes a CompatibleBuildIdRedirectRule message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompatibleBuildIdRedirectRule
                     * @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)): temporal.api.taskqueue.v1.CompatibleBuildIdRedirectRule;

                    /**
                     * Creates a CompatibleBuildIdRedirectRule message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompatibleBuildIdRedirectRule
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.CompatibleBuildIdRedirectRule;

                    /**
                     * Creates a plain object from a CompatibleBuildIdRedirectRule message. Also converts values to other types if specified.
                     * @param message CompatibleBuildIdRedirectRule
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.CompatibleBuildIdRedirectRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompatibleBuildIdRedirectRule to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompatibleBuildIdRedirectRule
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TimestampedBuildIdAssignmentRule. */
                interface ITimestampedBuildIdAssignmentRule {

                    /** TimestampedBuildIdAssignmentRule rule */
                    rule?: (temporal.api.taskqueue.v1.IBuildIdAssignmentRule|null);

                    /** TimestampedBuildIdAssignmentRule createTime */
                    createTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a TimestampedBuildIdAssignmentRule. */
                class TimestampedBuildIdAssignmentRule implements ITimestampedBuildIdAssignmentRule {

                    /**
                     * Constructs a new TimestampedBuildIdAssignmentRule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITimestampedBuildIdAssignmentRule);

                    /** TimestampedBuildIdAssignmentRule rule. */
                    public rule?: (temporal.api.taskqueue.v1.IBuildIdAssignmentRule|null);

                    /** TimestampedBuildIdAssignmentRule createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new TimestampedBuildIdAssignmentRule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TimestampedBuildIdAssignmentRule instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITimestampedBuildIdAssignmentRule): temporal.api.taskqueue.v1.TimestampedBuildIdAssignmentRule;

                    /**
                     * Encodes the specified TimestampedBuildIdAssignmentRule message. Does not implicitly {@link temporal.api.taskqueue.v1.TimestampedBuildIdAssignmentRule.verify|verify} messages.
                     * @param message TimestampedBuildIdAssignmentRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITimestampedBuildIdAssignmentRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TimestampedBuildIdAssignmentRule message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TimestampedBuildIdAssignmentRule.verify|verify} messages.
                     * @param message TimestampedBuildIdAssignmentRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITimestampedBuildIdAssignmentRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TimestampedBuildIdAssignmentRule message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TimestampedBuildIdAssignmentRule
                     * @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): temporal.api.taskqueue.v1.TimestampedBuildIdAssignmentRule;

                    /**
                     * Decodes a TimestampedBuildIdAssignmentRule message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TimestampedBuildIdAssignmentRule
                     * @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)): temporal.api.taskqueue.v1.TimestampedBuildIdAssignmentRule;

                    /**
                     * Creates a TimestampedBuildIdAssignmentRule message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TimestampedBuildIdAssignmentRule
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TimestampedBuildIdAssignmentRule;

                    /**
                     * Creates a plain object from a TimestampedBuildIdAssignmentRule message. Also converts values to other types if specified.
                     * @param message TimestampedBuildIdAssignmentRule
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TimestampedBuildIdAssignmentRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TimestampedBuildIdAssignmentRule to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TimestampedBuildIdAssignmentRule
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TimestampedCompatibleBuildIdRedirectRule. */
                interface ITimestampedCompatibleBuildIdRedirectRule {

                    /** TimestampedCompatibleBuildIdRedirectRule rule */
                    rule?: (temporal.api.taskqueue.v1.ICompatibleBuildIdRedirectRule|null);

                    /** TimestampedCompatibleBuildIdRedirectRule createTime */
                    createTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a TimestampedCompatibleBuildIdRedirectRule. */
                class TimestampedCompatibleBuildIdRedirectRule implements ITimestampedCompatibleBuildIdRedirectRule {

                    /**
                     * Constructs a new TimestampedCompatibleBuildIdRedirectRule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITimestampedCompatibleBuildIdRedirectRule);

                    /** TimestampedCompatibleBuildIdRedirectRule rule. */
                    public rule?: (temporal.api.taskqueue.v1.ICompatibleBuildIdRedirectRule|null);

                    /** TimestampedCompatibleBuildIdRedirectRule createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new TimestampedCompatibleBuildIdRedirectRule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TimestampedCompatibleBuildIdRedirectRule instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITimestampedCompatibleBuildIdRedirectRule): temporal.api.taskqueue.v1.TimestampedCompatibleBuildIdRedirectRule;

                    /**
                     * Encodes the specified TimestampedCompatibleBuildIdRedirectRule message. Does not implicitly {@link temporal.api.taskqueue.v1.TimestampedCompatibleBuildIdRedirectRule.verify|verify} messages.
                     * @param message TimestampedCompatibleBuildIdRedirectRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITimestampedCompatibleBuildIdRedirectRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TimestampedCompatibleBuildIdRedirectRule message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TimestampedCompatibleBuildIdRedirectRule.verify|verify} messages.
                     * @param message TimestampedCompatibleBuildIdRedirectRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITimestampedCompatibleBuildIdRedirectRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TimestampedCompatibleBuildIdRedirectRule message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TimestampedCompatibleBuildIdRedirectRule
                     * @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): temporal.api.taskqueue.v1.TimestampedCompatibleBuildIdRedirectRule;

                    /**
                     * Decodes a TimestampedCompatibleBuildIdRedirectRule message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TimestampedCompatibleBuildIdRedirectRule
                     * @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)): temporal.api.taskqueue.v1.TimestampedCompatibleBuildIdRedirectRule;

                    /**
                     * Creates a TimestampedCompatibleBuildIdRedirectRule message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TimestampedCompatibleBuildIdRedirectRule
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TimestampedCompatibleBuildIdRedirectRule;

                    /**
                     * Creates a plain object from a TimestampedCompatibleBuildIdRedirectRule message. Also converts values to other types if specified.
                     * @param message TimestampedCompatibleBuildIdRedirectRule
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TimestampedCompatibleBuildIdRedirectRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TimestampedCompatibleBuildIdRedirectRule to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TimestampedCompatibleBuildIdRedirectRule
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PollerScalingDecision. */
                interface IPollerScalingDecision {

                    /**
                     * How many poll requests to suggest should be added or removed, if any. As of now, server only
                     * scales up or down by 1. However, SDKs should allow for other values (while staying within
                     * defined min/max).
                     *
                     * The SDK is free to ignore this suggestion, EX: making more polls would not make sense because
                     * all slots are already occupied.
                     */
                    pollRequestDeltaSuggestion?: (number|null);
                }

                /**
                 * Attached to task responses to give hints to the SDK about how it may adjust its number of
                 * pollers.
                 */
                class PollerScalingDecision implements IPollerScalingDecision {

                    /**
                     * Constructs a new PollerScalingDecision.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.IPollerScalingDecision);

                    /**
                     * How many poll requests to suggest should be added or removed, if any. As of now, server only
                     * scales up or down by 1. However, SDKs should allow for other values (while staying within
                     * defined min/max).
                     *
                     * The SDK is free to ignore this suggestion, EX: making more polls would not make sense because
                     * all slots are already occupied.
                     */
                    public pollRequestDeltaSuggestion: number;

                    /**
                     * Creates a new PollerScalingDecision instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PollerScalingDecision instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.IPollerScalingDecision): temporal.api.taskqueue.v1.PollerScalingDecision;

                    /**
                     * Encodes the specified PollerScalingDecision message. Does not implicitly {@link temporal.api.taskqueue.v1.PollerScalingDecision.verify|verify} messages.
                     * @param message PollerScalingDecision message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.IPollerScalingDecision, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PollerScalingDecision message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.PollerScalingDecision.verify|verify} messages.
                     * @param message PollerScalingDecision message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.IPollerScalingDecision, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PollerScalingDecision message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PollerScalingDecision
                     * @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): temporal.api.taskqueue.v1.PollerScalingDecision;

                    /**
                     * Decodes a PollerScalingDecision message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PollerScalingDecision
                     * @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)): temporal.api.taskqueue.v1.PollerScalingDecision;

                    /**
                     * Creates a PollerScalingDecision message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PollerScalingDecision
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.PollerScalingDecision;

                    /**
                     * Creates a plain object from a PollerScalingDecision message. Also converts values to other types if specified.
                     * @param message PollerScalingDecision
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.PollerScalingDecision, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PollerScalingDecision to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PollerScalingDecision
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RateLimit. */
                interface IRateLimit {

                    /** Zero is a valid rate limit. */
                    requestsPerSecond?: (number|null);
                }

                /** Represents a RateLimit. */
                class RateLimit implements IRateLimit {

                    /**
                     * Constructs a new RateLimit.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.IRateLimit);

                    /** Zero is a valid rate limit. */
                    public requestsPerSecond: number;

                    /**
                     * Creates a new RateLimit instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RateLimit instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.IRateLimit): temporal.api.taskqueue.v1.RateLimit;

                    /**
                     * Encodes the specified RateLimit message. Does not implicitly {@link temporal.api.taskqueue.v1.RateLimit.verify|verify} messages.
                     * @param message RateLimit message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.IRateLimit, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RateLimit message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.RateLimit.verify|verify} messages.
                     * @param message RateLimit message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.IRateLimit, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RateLimit message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RateLimit
                     * @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): temporal.api.taskqueue.v1.RateLimit;

                    /**
                     * Decodes a RateLimit message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RateLimit
                     * @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)): temporal.api.taskqueue.v1.RateLimit;

                    /**
                     * Creates a RateLimit message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RateLimit
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.RateLimit;

                    /**
                     * Creates a plain object from a RateLimit message. Also converts values to other types if specified.
                     * @param message RateLimit
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.RateLimit, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RateLimit to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RateLimit
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ConfigMetadata. */
                interface IConfigMetadata {

                    /** Reason for why the config was set. */
                    reason?: (string|null);

                    /**
                     * Identity of the last updater.
                     * Set by the request's identity field.
                     */
                    updateIdentity?: (string|null);

                    /** Time of the last update. */
                    updateTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a ConfigMetadata. */
                class ConfigMetadata implements IConfigMetadata {

                    /**
                     * Constructs a new ConfigMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.IConfigMetadata);

                    /** Reason for why the config was set. */
                    public reason: string;

                    /**
                     * Identity of the last updater.
                     * Set by the request's identity field.
                     */
                    public updateIdentity: string;

                    /** Time of the last update. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new ConfigMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ConfigMetadata instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.IConfigMetadata): temporal.api.taskqueue.v1.ConfigMetadata;

                    /**
                     * Encodes the specified ConfigMetadata message. Does not implicitly {@link temporal.api.taskqueue.v1.ConfigMetadata.verify|verify} messages.
                     * @param message ConfigMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.IConfigMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ConfigMetadata message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.ConfigMetadata.verify|verify} messages.
                     * @param message ConfigMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.IConfigMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ConfigMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ConfigMetadata
                     * @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): temporal.api.taskqueue.v1.ConfigMetadata;

                    /**
                     * Decodes a ConfigMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ConfigMetadata
                     * @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)): temporal.api.taskqueue.v1.ConfigMetadata;

                    /**
                     * Creates a ConfigMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ConfigMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.ConfigMetadata;

                    /**
                     * Creates a plain object from a ConfigMetadata message. Also converts values to other types if specified.
                     * @param message ConfigMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.ConfigMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ConfigMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ConfigMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RateLimitConfig. */
                interface IRateLimitConfig {

                    /** RateLimitConfig rateLimit */
                    rateLimit?: (temporal.api.taskqueue.v1.IRateLimit|null);

                    /** RateLimitConfig metadata */
                    metadata?: (temporal.api.taskqueue.v1.IConfigMetadata|null);
                }

                /** Represents a RateLimitConfig. */
                class RateLimitConfig implements IRateLimitConfig {

                    /**
                     * Constructs a new RateLimitConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.IRateLimitConfig);

                    /** RateLimitConfig rateLimit. */
                    public rateLimit?: (temporal.api.taskqueue.v1.IRateLimit|null);

                    /** RateLimitConfig metadata. */
                    public metadata?: (temporal.api.taskqueue.v1.IConfigMetadata|null);

                    /**
                     * Creates a new RateLimitConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RateLimitConfig instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.IRateLimitConfig): temporal.api.taskqueue.v1.RateLimitConfig;

                    /**
                     * Encodes the specified RateLimitConfig message. Does not implicitly {@link temporal.api.taskqueue.v1.RateLimitConfig.verify|verify} messages.
                     * @param message RateLimitConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.IRateLimitConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RateLimitConfig message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.RateLimitConfig.verify|verify} messages.
                     * @param message RateLimitConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.IRateLimitConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RateLimitConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RateLimitConfig
                     * @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): temporal.api.taskqueue.v1.RateLimitConfig;

                    /**
                     * Decodes a RateLimitConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RateLimitConfig
                     * @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)): temporal.api.taskqueue.v1.RateLimitConfig;

                    /**
                     * Creates a RateLimitConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RateLimitConfig
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.RateLimitConfig;

                    /**
                     * Creates a plain object from a RateLimitConfig message. Also converts values to other types if specified.
                     * @param message RateLimitConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.RateLimitConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RateLimitConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RateLimitConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TaskQueueConfig. */
                interface ITaskQueueConfig {

                    /** Unless modified, this is the system-defined rate limit. */
                    queueRateLimit?: (temporal.api.taskqueue.v1.IRateLimitConfig|null);

                    /** If set, each individual fairness key will be limited to this rate, scaled by the weight of the fairness key. */
                    fairnessKeysRateLimitDefault?: (temporal.api.taskqueue.v1.IRateLimitConfig|null);

                    /** If set, overrides the fairness weights for the corresponding fairness keys. */
                    fairnessWeightOverrides?: ({ [k: string]: number }|null);
                }

                /** Represents a TaskQueueConfig. */
                class TaskQueueConfig implements ITaskQueueConfig {

                    /**
                     * Constructs a new TaskQueueConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.taskqueue.v1.ITaskQueueConfig);

                    /** Unless modified, this is the system-defined rate limit. */
                    public queueRateLimit?: (temporal.api.taskqueue.v1.IRateLimitConfig|null);

                    /** If set, each individual fairness key will be limited to this rate, scaled by the weight of the fairness key. */
                    public fairnessKeysRateLimitDefault?: (temporal.api.taskqueue.v1.IRateLimitConfig|null);

                    /** If set, overrides the fairness weights for the corresponding fairness keys. */
                    public fairnessWeightOverrides: { [k: string]: number };

                    /**
                     * Creates a new TaskQueueConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TaskQueueConfig instance
                     */
                    public static create(properties?: temporal.api.taskqueue.v1.ITaskQueueConfig): temporal.api.taskqueue.v1.TaskQueueConfig;

                    /**
                     * Encodes the specified TaskQueueConfig message. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueConfig.verify|verify} messages.
                     * @param message TaskQueueConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.taskqueue.v1.ITaskQueueConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TaskQueueConfig message, length delimited. Does not implicitly {@link temporal.api.taskqueue.v1.TaskQueueConfig.verify|verify} messages.
                     * @param message TaskQueueConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.taskqueue.v1.ITaskQueueConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TaskQueueConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TaskQueueConfig
                     * @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): temporal.api.taskqueue.v1.TaskQueueConfig;

                    /**
                     * Decodes a TaskQueueConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TaskQueueConfig
                     * @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)): temporal.api.taskqueue.v1.TaskQueueConfig;

                    /**
                     * Creates a TaskQueueConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TaskQueueConfig
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.taskqueue.v1.TaskQueueConfig;

                    /**
                     * Creates a plain object from a TaskQueueConfig message. Also converts values to other types if specified.
                     * @param message TaskQueueConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.taskqueue.v1.TaskQueueConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TaskQueueConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TaskQueueConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace sdk. */
        namespace sdk {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a UserMetadata. */
                interface IUserMetadata {

                    /**
                     * Short-form text that provides a summary. This payload should be a "json/plain"-encoded payload
                     * that is a single JSON string for use in user interfaces. User interface formatting may not
                     * apply to this text when used in "title" situations. The payload data section is limited to 400
                     * bytes by default.
                     */
                    summary?: (temporal.api.common.v1.IPayload|null);

                    /**
                     * Long-form text that provides details. This payload should be a "json/plain"-encoded payload
                     * that is a single JSON string for use in user interfaces. User interface formatting may apply to
                     * this text in common use. The payload data section is limited to 20000 bytes by default.
                     */
                    details?: (temporal.api.common.v1.IPayload|null);
                }

                /** Information a user can set, often for use by user interfaces. */
                class UserMetadata implements IUserMetadata {

                    /**
                     * Constructs a new UserMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.sdk.v1.IUserMetadata);

                    /**
                     * Short-form text that provides a summary. This payload should be a "json/plain"-encoded payload
                     * that is a single JSON string for use in user interfaces. User interface formatting may not
                     * apply to this text when used in "title" situations. The payload data section is limited to 400
                     * bytes by default.
                     */
                    public summary?: (temporal.api.common.v1.IPayload|null);

                    /**
                     * Long-form text that provides details. This payload should be a "json/plain"-encoded payload
                     * that is a single JSON string for use in user interfaces. User interface formatting may apply to
                     * this text in common use. The payload data section is limited to 20000 bytes by default.
                     */
                    public details?: (temporal.api.common.v1.IPayload|null);

                    /**
                     * Creates a new UserMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserMetadata instance
                     */
                    public static create(properties?: temporal.api.sdk.v1.IUserMetadata): temporal.api.sdk.v1.UserMetadata;

                    /**
                     * Encodes the specified UserMetadata message. Does not implicitly {@link temporal.api.sdk.v1.UserMetadata.verify|verify} messages.
                     * @param message UserMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.sdk.v1.IUserMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserMetadata message, length delimited. Does not implicitly {@link temporal.api.sdk.v1.UserMetadata.verify|verify} messages.
                     * @param message UserMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.sdk.v1.IUserMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a UserMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserMetadata
                     * @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): temporal.api.sdk.v1.UserMetadata;

                    /**
                     * Decodes a UserMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserMetadata
                     * @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)): temporal.api.sdk.v1.UserMetadata;

                    /**
                     * Creates a UserMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.sdk.v1.UserMetadata;

                    /**
                     * Creates a plain object from a UserMetadata message. Also converts values to other types if specified.
                     * @param message UserMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.sdk.v1.UserMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UserMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UserMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowTaskCompletedMetadata. */
                interface IWorkflowTaskCompletedMetadata {

                    /**
                     * Internal flags used by the core SDK. SDKs using flags must comply with the following behavior:
                     *
                     * During replay:
                     * If a flag is not recognized (value is too high or not defined), it must fail the workflow
                     * task.
                     * If a flag is recognized, it is stored in a set of used flags for the run. Code checks for
                     * that flag during and after this WFT are allowed to assume that the flag is present.
                     * If a code check for a flag does not find the flag in the set of used flags, it must take
                     * the branch corresponding to the absence of that flag.
                     *
                     * During non-replay execution of new WFTs:
                     * The SDK is free to use all flags it knows about. It must record any newly-used (IE: not
                     * previously recorded) flags when completing the WFT.
                     *
                     * SDKs which are too old to even know about this field at all are considered to produce
                     * undefined behavior if they replay workflows which used this mechanism.
                     *
                     * (-- api-linter: core::0141::forbidden-types=disabled
                     * aip.dev/not-precedent: These really shouldn't have negative values. --)
                     */
                    coreUsedFlags?: (number[]|null);

                    /**
                     * Flags used by the SDK lang. No attempt is made to distinguish between different SDK languages
                     * here as processing a workflow with a different language than the one which authored it is
                     * already undefined behavior. See `core_used_patches` for more.
                     *
                     * (-- api-linter: core::0141::forbidden-types=disabled
                     * aip.dev/not-precedent: These really shouldn't have negative values. --)
                     */
                    langUsedFlags?: (number[]|null);

                    /**
                     * Name of the SDK that processed the task. This is usually something like "temporal-go" and is
                     * usually the same as client-name gRPC header. This should only be set if its value changed
                     * since the last time recorded on the workflow (or be set on the first task).
                     *
                     * (-- api-linter: core::0122::name-suffix=disabled
                     * aip.dev/not-precedent: We're ok with a name suffix here. --)
                     */
                    sdkName?: (string|null);

                    /**
                     * Version of the SDK that processed the task. This is usually something like "1.20.0" and is
                     * usually the same as client-version gRPC header. This should only be set if its value changed
                     * since the last time recorded on the workflow (or be set on the first task).
                     */
                    sdkVersion?: (string|null);
                }

                /** Represents a WorkflowTaskCompletedMetadata. */
                class WorkflowTaskCompletedMetadata implements IWorkflowTaskCompletedMetadata {

                    /**
                     * Constructs a new WorkflowTaskCompletedMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.sdk.v1.IWorkflowTaskCompletedMetadata);

                    /**
                     * Internal flags used by the core SDK. SDKs using flags must comply with the following behavior:
                     *
                     * During replay:
                     * * If a flag is not recognized (value is too high or not defined), it must fail the workflow
                     * task.
                     * * If a flag is recognized, it is stored in a set of used flags for the run. Code checks for
                     * that flag during and after this WFT are allowed to assume that the flag is present.
                     * * If a code check for a flag does not find the flag in the set of used flags, it must take
                     * the branch corresponding to the absence of that flag.
                     *
                     * During non-replay execution of new WFTs:
                     * * The SDK is free to use all flags it knows about. It must record any newly-used (IE: not
                     * previously recorded) flags when completing the WFT.
                     *
                     * SDKs which are too old to even know about this field at all are considered to produce
                     * undefined behavior if they replay workflows which used this mechanism.
                     *
                     * (-- api-linter: core::0141::forbidden-types=disabled
                     * aip.dev/not-precedent: These really shouldn't have negative values. --)
                     */
                    public coreUsedFlags: number[];

                    /**
                     * Flags used by the SDK lang. No attempt is made to distinguish between different SDK languages
                     * here as processing a workflow with a different language than the one which authored it is
                     * already undefined behavior. See `core_used_patches` for more.
                     *
                     * (-- api-linter: core::0141::forbidden-types=disabled
                     * aip.dev/not-precedent: These really shouldn't have negative values. --)
                     */
                    public langUsedFlags: number[];

                    /**
                     * Name of the SDK that processed the task. This is usually something like "temporal-go" and is
                     * usually the same as client-name gRPC header. This should only be set if its value changed
                     * since the last time recorded on the workflow (or be set on the first task).
                     *
                     * (-- api-linter: core::0122::name-suffix=disabled
                     * aip.dev/not-precedent: We're ok with a name suffix here. --)
                     */
                    public sdkName: string;

                    /**
                     * Version of the SDK that processed the task. This is usually something like "1.20.0" and is
                     * usually the same as client-version gRPC header. This should only be set if its value changed
                     * since the last time recorded on the workflow (or be set on the first task).
                     */
                    public sdkVersion: string;

                    /**
                     * Creates a new WorkflowTaskCompletedMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowTaskCompletedMetadata instance
                     */
                    public static create(properties?: temporal.api.sdk.v1.IWorkflowTaskCompletedMetadata): temporal.api.sdk.v1.WorkflowTaskCompletedMetadata;

                    /**
                     * Encodes the specified WorkflowTaskCompletedMetadata message. Does not implicitly {@link temporal.api.sdk.v1.WorkflowTaskCompletedMetadata.verify|verify} messages.
                     * @param message WorkflowTaskCompletedMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.sdk.v1.IWorkflowTaskCompletedMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowTaskCompletedMetadata message, length delimited. Does not implicitly {@link temporal.api.sdk.v1.WorkflowTaskCompletedMetadata.verify|verify} messages.
                     * @param message WorkflowTaskCompletedMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.sdk.v1.IWorkflowTaskCompletedMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowTaskCompletedMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowTaskCompletedMetadata
                     * @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): temporal.api.sdk.v1.WorkflowTaskCompletedMetadata;

                    /**
                     * Decodes a WorkflowTaskCompletedMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowTaskCompletedMetadata
                     * @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)): temporal.api.sdk.v1.WorkflowTaskCompletedMetadata;

                    /**
                     * Creates a WorkflowTaskCompletedMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowTaskCompletedMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.sdk.v1.WorkflowTaskCompletedMetadata;

                    /**
                     * Creates a plain object from a WorkflowTaskCompletedMetadata message. Also converts values to other types if specified.
                     * @param message WorkflowTaskCompletedMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.sdk.v1.WorkflowTaskCompletedMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowTaskCompletedMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowTaskCompletedMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkerConfig. */
                interface IWorkerConfig {

                    /** WorkerConfig workflowCacheSize */
                    workflowCacheSize?: (number|null);

                    /** WorkerConfig simplePollerBehavior */
                    simplePollerBehavior?: (temporal.api.sdk.v1.WorkerConfig.ISimplePollerBehavior|null);

                    /** WorkerConfig autoscalingPollerBehavior */
                    autoscalingPollerBehavior?: (temporal.api.sdk.v1.WorkerConfig.IAutoscalingPollerBehavior|null);
                }

                /** Represents a WorkerConfig. */
                class WorkerConfig implements IWorkerConfig {

                    /**
                     * Constructs a new WorkerConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.sdk.v1.IWorkerConfig);

                    /** WorkerConfig workflowCacheSize. */
                    public workflowCacheSize: number;

                    /** WorkerConfig simplePollerBehavior. */
                    public simplePollerBehavior?: (temporal.api.sdk.v1.WorkerConfig.ISimplePollerBehavior|null);

                    /** WorkerConfig autoscalingPollerBehavior. */
                    public autoscalingPollerBehavior?: (temporal.api.sdk.v1.WorkerConfig.IAutoscalingPollerBehavior|null);

                    /** WorkerConfig pollerBehavior. */
                    public pollerBehavior?: ("simplePollerBehavior"|"autoscalingPollerBehavior");

                    /**
                     * Creates a new WorkerConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerConfig instance
                     */
                    public static create(properties?: temporal.api.sdk.v1.IWorkerConfig): temporal.api.sdk.v1.WorkerConfig;

                    /**
                     * Encodes the specified WorkerConfig message. Does not implicitly {@link temporal.api.sdk.v1.WorkerConfig.verify|verify} messages.
                     * @param message WorkerConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.sdk.v1.IWorkerConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerConfig message, length delimited. Does not implicitly {@link temporal.api.sdk.v1.WorkerConfig.verify|verify} messages.
                     * @param message WorkerConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.sdk.v1.IWorkerConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerConfig
                     * @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): temporal.api.sdk.v1.WorkerConfig;

                    /**
                     * Decodes a WorkerConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerConfig
                     * @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)): temporal.api.sdk.v1.WorkerConfig;

                    /**
                     * Creates a WorkerConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerConfig
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.sdk.v1.WorkerConfig;

                    /**
                     * Creates a plain object from a WorkerConfig message. Also converts values to other types if specified.
                     * @param message WorkerConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.sdk.v1.WorkerConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace WorkerConfig {

                    /** Properties of a SimplePollerBehavior. */
                    interface ISimplePollerBehavior {

                        /** SimplePollerBehavior maxPollers */
                        maxPollers?: (number|null);
                    }

                    /** Represents a SimplePollerBehavior. */
                    class SimplePollerBehavior implements ISimplePollerBehavior {

                        /**
                         * Constructs a new SimplePollerBehavior.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.sdk.v1.WorkerConfig.ISimplePollerBehavior);

                        /** SimplePollerBehavior maxPollers. */
                        public maxPollers: number;

                        /**
                         * Creates a new SimplePollerBehavior instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SimplePollerBehavior instance
                         */
                        public static create(properties?: temporal.api.sdk.v1.WorkerConfig.ISimplePollerBehavior): temporal.api.sdk.v1.WorkerConfig.SimplePollerBehavior;

                        /**
                         * Encodes the specified SimplePollerBehavior message. Does not implicitly {@link temporal.api.sdk.v1.WorkerConfig.SimplePollerBehavior.verify|verify} messages.
                         * @param message SimplePollerBehavior message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.sdk.v1.WorkerConfig.ISimplePollerBehavior, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SimplePollerBehavior message, length delimited. Does not implicitly {@link temporal.api.sdk.v1.WorkerConfig.SimplePollerBehavior.verify|verify} messages.
                         * @param message SimplePollerBehavior message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.sdk.v1.WorkerConfig.ISimplePollerBehavior, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SimplePollerBehavior message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SimplePollerBehavior
                         * @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): temporal.api.sdk.v1.WorkerConfig.SimplePollerBehavior;

                        /**
                         * Decodes a SimplePollerBehavior message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SimplePollerBehavior
                         * @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)): temporal.api.sdk.v1.WorkerConfig.SimplePollerBehavior;

                        /**
                         * Creates a SimplePollerBehavior message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SimplePollerBehavior
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.sdk.v1.WorkerConfig.SimplePollerBehavior;

                        /**
                         * Creates a plain object from a SimplePollerBehavior message. Also converts values to other types if specified.
                         * @param message SimplePollerBehavior
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.sdk.v1.WorkerConfig.SimplePollerBehavior, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SimplePollerBehavior to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SimplePollerBehavior
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AutoscalingPollerBehavior. */
                    interface IAutoscalingPollerBehavior {

                        /**
                         * At least this many poll calls will always be attempted (assuming slots are available).
                         * Cannot be zero.
                         */
                        minPollers?: (number|null);

                        /** At most this many poll calls will ever be open at once. Must be >= `minimum`. */
                        maxPollers?: (number|null);

                        /**
                         * This many polls will be attempted initially before scaling kicks in. Must be between
                         * `minimum` and `maximum`.
                         */
                        initialPollers?: (number|null);
                    }

                    /** Represents an AutoscalingPollerBehavior. */
                    class AutoscalingPollerBehavior implements IAutoscalingPollerBehavior {

                        /**
                         * Constructs a new AutoscalingPollerBehavior.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.sdk.v1.WorkerConfig.IAutoscalingPollerBehavior);

                        /**
                         * At least this many poll calls will always be attempted (assuming slots are available).
                         * Cannot be zero.
                         */
                        public minPollers: number;

                        /** At most this many poll calls will ever be open at once. Must be >= `minimum`. */
                        public maxPollers: number;

                        /**
                         * This many polls will be attempted initially before scaling kicks in. Must be between
                         * `minimum` and `maximum`.
                         */
                        public initialPollers: number;

                        /**
                         * Creates a new AutoscalingPollerBehavior instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AutoscalingPollerBehavior instance
                         */
                        public static create(properties?: temporal.api.sdk.v1.WorkerConfig.IAutoscalingPollerBehavior): temporal.api.sdk.v1.WorkerConfig.AutoscalingPollerBehavior;

                        /**
                         * Encodes the specified AutoscalingPollerBehavior message. Does not implicitly {@link temporal.api.sdk.v1.WorkerConfig.AutoscalingPollerBehavior.verify|verify} messages.
                         * @param message AutoscalingPollerBehavior message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.sdk.v1.WorkerConfig.IAutoscalingPollerBehavior, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AutoscalingPollerBehavior message, length delimited. Does not implicitly {@link temporal.api.sdk.v1.WorkerConfig.AutoscalingPollerBehavior.verify|verify} messages.
                         * @param message AutoscalingPollerBehavior message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.sdk.v1.WorkerConfig.IAutoscalingPollerBehavior, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AutoscalingPollerBehavior message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AutoscalingPollerBehavior
                         * @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): temporal.api.sdk.v1.WorkerConfig.AutoscalingPollerBehavior;

                        /**
                         * Decodes an AutoscalingPollerBehavior message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AutoscalingPollerBehavior
                         * @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)): temporal.api.sdk.v1.WorkerConfig.AutoscalingPollerBehavior;

                        /**
                         * Creates an AutoscalingPollerBehavior message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AutoscalingPollerBehavior
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.sdk.v1.WorkerConfig.AutoscalingPollerBehavior;

                        /**
                         * Creates a plain object from an AutoscalingPollerBehavior message. Also converts values to other types if specified.
                         * @param message AutoscalingPollerBehavior
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.sdk.v1.WorkerConfig.AutoscalingPollerBehavior, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AutoscalingPollerBehavior to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AutoscalingPollerBehavior
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a WorkflowMetadata. */
                interface IWorkflowMetadata {

                    /** Metadata provided at declaration or creation time. */
                    definition?: (temporal.api.sdk.v1.IWorkflowDefinition|null);

                    /**
                     * Current long-form details of the workflow's state. This is used by user interfaces to show
                     * long-form text. This text may be formatted by the user interface.
                     */
                    currentDetails?: (string|null);
                }

                /** The name of the query to retrieve this information is `__temporal_workflow_metadata`. */
                class WorkflowMetadata implements IWorkflowMetadata {

                    /**
                     * Constructs a new WorkflowMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.sdk.v1.IWorkflowMetadata);

                    /** Metadata provided at declaration or creation time. */
                    public definition?: (temporal.api.sdk.v1.IWorkflowDefinition|null);

                    /**
                     * Current long-form details of the workflow's state. This is used by user interfaces to show
                     * long-form text. This text may be formatted by the user interface.
                     */
                    public currentDetails: string;

                    /**
                     * Creates a new WorkflowMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowMetadata instance
                     */
                    public static create(properties?: temporal.api.sdk.v1.IWorkflowMetadata): temporal.api.sdk.v1.WorkflowMetadata;

                    /**
                     * Encodes the specified WorkflowMetadata message. Does not implicitly {@link temporal.api.sdk.v1.WorkflowMetadata.verify|verify} messages.
                     * @param message WorkflowMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.sdk.v1.IWorkflowMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowMetadata message, length delimited. Does not implicitly {@link temporal.api.sdk.v1.WorkflowMetadata.verify|verify} messages.
                     * @param message WorkflowMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.sdk.v1.IWorkflowMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowMetadata
                     * @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): temporal.api.sdk.v1.WorkflowMetadata;

                    /**
                     * Decodes a WorkflowMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowMetadata
                     * @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)): temporal.api.sdk.v1.WorkflowMetadata;

                    /**
                     * Creates a WorkflowMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.sdk.v1.WorkflowMetadata;

                    /**
                     * Creates a plain object from a WorkflowMetadata message. Also converts values to other types if specified.
                     * @param message WorkflowMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.sdk.v1.WorkflowMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowDefinition. */
                interface IWorkflowDefinition {

                    /**
                     * A name scoped by the task queue that maps to this workflow definition.
                     * If missing, this workflow is a dynamic workflow.
                     */
                    type?: (string|null);

                    /** Query definitions, sorted by name. */
                    queryDefinitions?: (temporal.api.sdk.v1.IWorkflowInteractionDefinition[]|null);

                    /** Signal definitions, sorted by name. */
                    signalDefinitions?: (temporal.api.sdk.v1.IWorkflowInteractionDefinition[]|null);

                    /** Update definitions, sorted by name. */
                    updateDefinitions?: (temporal.api.sdk.v1.IWorkflowInteractionDefinition[]|null);
                }

                /** (-- api-linter: core::0203::optional=disabled --) */
                class WorkflowDefinition implements IWorkflowDefinition {

                    /**
                     * Constructs a new WorkflowDefinition.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.sdk.v1.IWorkflowDefinition);

                    /**
                     * A name scoped by the task queue that maps to this workflow definition.
                     * If missing, this workflow is a dynamic workflow.
                     */
                    public type: string;

                    /** Query definitions, sorted by name. */
                    public queryDefinitions: temporal.api.sdk.v1.IWorkflowInteractionDefinition[];

                    /** Signal definitions, sorted by name. */
                    public signalDefinitions: temporal.api.sdk.v1.IWorkflowInteractionDefinition[];

                    /** Update definitions, sorted by name. */
                    public updateDefinitions: temporal.api.sdk.v1.IWorkflowInteractionDefinition[];

                    /**
                     * Creates a new WorkflowDefinition instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowDefinition instance
                     */
                    public static create(properties?: temporal.api.sdk.v1.IWorkflowDefinition): temporal.api.sdk.v1.WorkflowDefinition;

                    /**
                     * Encodes the specified WorkflowDefinition message. Does not implicitly {@link temporal.api.sdk.v1.WorkflowDefinition.verify|verify} messages.
                     * @param message WorkflowDefinition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.sdk.v1.IWorkflowDefinition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowDefinition message, length delimited. Does not implicitly {@link temporal.api.sdk.v1.WorkflowDefinition.verify|verify} messages.
                     * @param message WorkflowDefinition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.sdk.v1.IWorkflowDefinition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowDefinition message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowDefinition
                     * @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): temporal.api.sdk.v1.WorkflowDefinition;

                    /**
                     * Decodes a WorkflowDefinition message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowDefinition
                     * @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)): temporal.api.sdk.v1.WorkflowDefinition;

                    /**
                     * Creates a WorkflowDefinition message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowDefinition
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.sdk.v1.WorkflowDefinition;

                    /**
                     * Creates a plain object from a WorkflowDefinition message. Also converts values to other types if specified.
                     * @param message WorkflowDefinition
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.sdk.v1.WorkflowDefinition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowDefinition to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowDefinition
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowInteractionDefinition. */
                interface IWorkflowInteractionDefinition {

                    /**
                     * An optional name for the handler. If missing, it represents
                     * a dynamic handler that processes any interactions not handled by others.
                     * There is at most one dynamic handler per workflow and interaction kind.
                     */
                    name?: (string|null);

                    /**
                     * An optional interaction description provided by the application.
                     * By convention, external tools may interpret its first part,
                     * i.e., ending with a line break, as a summary of the description.
                     */
                    description?: (string|null);
                }

                /**
                 * (-- api-linter: core::0123::resource-annotation=disabled
                 * aip.dev/not-precedent: The `name` field is optional. --)
                 * (-- api-linter: core::0203::optional=disabled --)
                 */
                class WorkflowInteractionDefinition implements IWorkflowInteractionDefinition {

                    /**
                     * Constructs a new WorkflowInteractionDefinition.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.sdk.v1.IWorkflowInteractionDefinition);

                    /**
                     * An optional name for the handler. If missing, it represents
                     * a dynamic handler that processes any interactions not handled by others.
                     * There is at most one dynamic handler per workflow and interaction kind.
                     */
                    public name: string;

                    /**
                     * An optional interaction description provided by the application.
                     * By convention, external tools may interpret its first part,
                     * i.e., ending with a line break, as a summary of the description.
                     */
                    public description: string;

                    /**
                     * Creates a new WorkflowInteractionDefinition instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowInteractionDefinition instance
                     */
                    public static create(properties?: temporal.api.sdk.v1.IWorkflowInteractionDefinition): temporal.api.sdk.v1.WorkflowInteractionDefinition;

                    /**
                     * Encodes the specified WorkflowInteractionDefinition message. Does not implicitly {@link temporal.api.sdk.v1.WorkflowInteractionDefinition.verify|verify} messages.
                     * @param message WorkflowInteractionDefinition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.sdk.v1.IWorkflowInteractionDefinition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowInteractionDefinition message, length delimited. Does not implicitly {@link temporal.api.sdk.v1.WorkflowInteractionDefinition.verify|verify} messages.
                     * @param message WorkflowInteractionDefinition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.sdk.v1.IWorkflowInteractionDefinition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowInteractionDefinition message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowInteractionDefinition
                     * @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): temporal.api.sdk.v1.WorkflowInteractionDefinition;

                    /**
                     * Decodes a WorkflowInteractionDefinition message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowInteractionDefinition
                     * @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)): temporal.api.sdk.v1.WorkflowInteractionDefinition;

                    /**
                     * Creates a WorkflowInteractionDefinition message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowInteractionDefinition
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.sdk.v1.WorkflowInteractionDefinition;

                    /**
                     * Creates a plain object from a WorkflowInteractionDefinition message. Also converts values to other types if specified.
                     * @param message WorkflowInteractionDefinition
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.sdk.v1.WorkflowInteractionDefinition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowInteractionDefinition to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowInteractionDefinition
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace history. */
        namespace history {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a WorkflowExecutionStartedEventAttributes. */
                interface IWorkflowExecutionStartedEventAttributes {

                    /** WorkflowExecutionStartedEventAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /**
                     * If this workflow is a child, the namespace our parent lives in.
                     * SDKs and UI tools should use `parent_workflow_namespace` field but server must use `parent_workflow_namespace_id` only.
                     */
                    parentWorkflowNamespace?: (string|null);

                    /** WorkflowExecutionStartedEventAttributes parentWorkflowNamespaceId */
                    parentWorkflowNamespaceId?: (string|null);

                    /**
                     * Contains information about parent workflow execution that initiated the child workflow these attributes belong to.
                     * If the workflow these attributes belong to is not a child workflow of any other execution, this field will not be populated.
                     */
                    parentWorkflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** EventID of the child execution initiated event in parent workflow */
                    parentInitiatedEventId?: (Long|null);

                    /** WorkflowExecutionStartedEventAttributes taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** SDK will deserialize this and provide it as arguments to the workflow function */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new. */
                    workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run. */
                    workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Run id of the previous workflow which continued-as-new or retried or cron executed into this
                     * workflow.
                     */
                    continuedExecutionRunId?: (string|null);

                    /** WorkflowExecutionStartedEventAttributes initiator */
                    initiator?: (temporal.api.enums.v1.ContinueAsNewInitiator|null);

                    /** WorkflowExecutionStartedEventAttributes continuedFailure */
                    continuedFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** WorkflowExecutionStartedEventAttributes lastCompletionResult */
                    lastCompletionResult?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * This is the run id when the WorkflowExecutionStarted event was written.
                     * A workflow reset changes the execution run_id, but preserves this field.
                     */
                    originalExecutionRunId?: (string|null);

                    /** Identity of the client who requested this execution */
                    identity?: (string|null);

                    /**
                     * This is the very first runId along the chain of ContinueAsNew, Retry, Cron and Reset.
                     * Used to identify a chain.
                     */
                    firstExecutionRunId?: (string|null);

                    /** WorkflowExecutionStartedEventAttributes retryPolicy */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Starting at 1, the number of times we have tried to execute this workflow */
                    attempt?: (number|null);

                    /**
                     * The absolute time at which the workflow will be timed out.
                     * This is passed without change to the next run/retry of a workflow.
                     */
                    workflowExecutionExpirationTime?: (google.protobuf.ITimestamp|null);

                    /** If this workflow runs on a cron schedule, it will appear here */
                    cronSchedule?: (string|null);

                    /**
                     * For a cron workflow, this contains the amount of time between when this iteration of
                     * the cron workflow was scheduled and when it should run next per its cron_schedule.
                     */
                    firstWorkflowTaskBackoff?: (google.protobuf.IDuration|null);

                    /** WorkflowExecutionStartedEventAttributes memo */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** WorkflowExecutionStartedEventAttributes searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** WorkflowExecutionStartedEventAttributes prevAutoResetPoints */
                    prevAutoResetPoints?: (temporal.api.workflow.v1.IResetPoints|null);

                    /** WorkflowExecutionStartedEventAttributes header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Version of the child execution initiated event in parent workflow
                     * It should be used together with parent_initiated_event_id to identify
                     * a child initiated event for global namespace
                     */
                    parentInitiatedEventVersion?: (Long|null);

                    /** This field is new in 1.21. */
                    workflowId?: (string|null);

                    /**
                     * If this workflow intends to use anything other than the current overall default version for
                     * the queue, then we include it here.
                     * Deprecated. [cleanup-experimental-wv]
                     */
                    sourceVersionStamp?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /** Completion callbacks attached when this workflow was started. */
                    completionCallbacks?: (temporal.api.common.v1.ICallback[]|null);

                    /**
                     * Contains information about the root workflow execution.
                     * The root workflow execution is defined as follows:
                     * 1. A workflow without parent workflow is its own root workflow.
                     * 2. A workflow that has a parent workflow has the same root workflow as its parent workflow.
                     * When the workflow is its own root workflow, then root_workflow_execution is nil.
                     * Note: workflows continued as new or reseted may or may not have parents, check examples below.
                     *
                     * Examples:
                     * Scenario 1: Workflow W1 starts child workflow W2, and W2 starts child workflow W3.
                     * - The root workflow of all three workflows is W1.
                     * - W1 has root_workflow_execution set to nil.
                     * - W2 and W3 have root_workflow_execution set to W1.
                     * Scenario 2: Workflow W1 starts child workflow W2, and W2 continued as new W3.
                     * - The root workflow of all three workflows is W1.
                     * - W1 has root_workflow_execution set to nil.
                     * - W2 and W3 have root_workflow_execution set to W1.
                     * Scenario 3: Workflow W1 continued as new W2.
                     * - The root workflow of W1 is W1 and the root workflow of W2 is W2.
                     * - W1 and W2 have root_workflow_execution set to nil.
                     * Scenario 4: Workflow W1 starts child workflow W2, and W2 is reseted, creating W3
                     * - The root workflow of all three workflows is W1.
                     * - W1 has root_workflow_execution set to nil.
                     * - W2 and W3 have root_workflow_execution set to W1.
                     * Scenario 5: Workflow W1 is reseted, creating W2.
                     * - The root workflow of W1 is W1 and the root workflow of W2 is W2.
                     * - W1 and W2 have root_workflow_execution set to nil.
                     */
                    rootWorkflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * When present, this execution is assigned to the build ID of its parent or previous execution.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    inheritedBuildId?: (string|null);

                    /**
                     * Versioning override applied to this workflow when it was started.
                     * Children, crons, retries, and continue-as-new will inherit source run's override if pinned
                     * and if the new workflow's Task Queue belongs to the override version.
                     */
                    versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /**
                     * When present, it means this is a child workflow of a parent that is Pinned to this Worker
                     * Deployment Version. In this case, child workflow will start as Pinned to this Version instead
                     * of starting on the Current Version of its Task Queue.
                     * This is set only if the child workflow is starting on a Task Queue belonging to the same
                     * Worker Deployment Version.
                     * Deprecated. Use `parent_versioning_info`.
                     */
                    parentPinnedWorkerDeploymentVersion?: (string|null);

                    /** Priority metadata */
                    priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * If present, the new workflow should start on this version with pinned base behavior.
                     * Child of pinned parent will inherit the parent's version if the Child's Task Queue belongs to that version.
                     *
                     * A new run initiated by workflow ContinueAsNew of pinned run, will inherit the previous run's version if the
                     * new run's Task Queue belongs to that version.
                     *
                     * A new run initiated by workflow Cron will never inherit.
                     *
                     * A new run initiated by workflow Retry will only inherit if the retried run is effectively pinned at the time
                     * of retry, and the retried run inherited a pinned version when it started (ie. it is a child of a pinned
                     * parent, or a CaN of a pinned run, and is running on a Task Queue in the inherited version).
                     *
                     * Pinned override is inherited if Task Queue of new run is compatible with the override version.
                     * Override is inherited separately and takes precedence over inherited base version.
                     *
                     * Note: This field is mutually exclusive with inherited_auto_upgrade_info.
                     * Additionaly, versioning_override, if present, overrides this field during routing decisions.
                     */
                    inheritedPinnedVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * If present, the new workflow begins with AutoUpgrade behavior. Before dispatching the
                     * first workflow task, this field is set to the deployment version on which the parent/
                     * previous run was operating. This inheritance only happens when the task queues belong to
                     * the same deployment version. The first workflow task will then be dispatched to either
                     * this inherited deployment version, or the current deployment version of the task queue's
                     * Deployment. After the first workflow task, the effective behavior depends on worker-sent
                     * values in subsequent workflow tasks.
                     *
                     * Inheritance rules:
                     * - ContinueAsNew and child workflows: inherit AutoUpgrade behavior and deployment version
                     * - Cron: never inherits
                     * - Retry: inherits only if the retried run is effectively AutoUpgrade at the time of
                     * retry, and inherited AutoUpgrade behavior when it started (i.e. it is a child of an
                     * AutoUpgrade parent or ContinueAsNew of an AutoUpgrade run, running on the same
                     * deployment as the parent/previous run)
                     *
                     * Additional notes:
                     * - This field is mutually exclusive with `inherited_pinned_version`.
                     * - `versioning_override`, if present, overrides this field during routing decisions.
                     * - SDK implementations do not interact with this field and is only used internally by
                     * the server to ensure task routing correctness.
                     */
                    inheritedAutoUpgradeInfo?: (temporal.api.deployment.v1.IInheritedAutoUpgradeInfo|null);

                    /**
                     * A boolean indicating whether the SDK has asked to eagerly execute the first workflow task for this workflow and
                     * eager execution was accepted by the server.
                     * Only populated by server with version >= 1.29.0.
                     */
                    eagerExecutionAccepted?: (boolean|null);
                }

                /** Always the first event in workflow history */
                class WorkflowExecutionStartedEventAttributes implements IWorkflowExecutionStartedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionStartedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionStartedEventAttributes);

                    /** WorkflowExecutionStartedEventAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /**
                     * If this workflow is a child, the namespace our parent lives in.
                     * SDKs and UI tools should use `parent_workflow_namespace` field but server must use `parent_workflow_namespace_id` only.
                     */
                    public parentWorkflowNamespace: string;

                    /** WorkflowExecutionStartedEventAttributes parentWorkflowNamespaceId. */
                    public parentWorkflowNamespaceId: string;

                    /**
                     * Contains information about parent workflow execution that initiated the child workflow these attributes belong to.
                     * If the workflow these attributes belong to is not a child workflow of any other execution, this field will not be populated.
                     */
                    public parentWorkflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** EventID of the child execution initiated event in parent workflow */
                    public parentInitiatedEventId: Long;

                    /** WorkflowExecutionStartedEventAttributes taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** SDK will deserialize this and provide it as arguments to the workflow function */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new. */
                    public workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run. */
                    public workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    public workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Run id of the previous workflow which continued-as-new or retried or cron executed into this
                     * workflow.
                     */
                    public continuedExecutionRunId: string;

                    /** WorkflowExecutionStartedEventAttributes initiator. */
                    public initiator: temporal.api.enums.v1.ContinueAsNewInitiator;

                    /** WorkflowExecutionStartedEventAttributes continuedFailure. */
                    public continuedFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** WorkflowExecutionStartedEventAttributes lastCompletionResult. */
                    public lastCompletionResult?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * This is the run id when the WorkflowExecutionStarted event was written.
                     * A workflow reset changes the execution run_id, but preserves this field.
                     */
                    public originalExecutionRunId: string;

                    /** Identity of the client who requested this execution */
                    public identity: string;

                    /**
                     * This is the very first runId along the chain of ContinueAsNew, Retry, Cron and Reset.
                     * Used to identify a chain.
                     */
                    public firstExecutionRunId: string;

                    /** WorkflowExecutionStartedEventAttributes retryPolicy. */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Starting at 1, the number of times we have tried to execute this workflow */
                    public attempt: number;

                    /**
                     * The absolute time at which the workflow will be timed out.
                     * This is passed without change to the next run/retry of a workflow.
                     */
                    public workflowExecutionExpirationTime?: (google.protobuf.ITimestamp|null);

                    /** If this workflow runs on a cron schedule, it will appear here */
                    public cronSchedule: string;

                    /**
                     * For a cron workflow, this contains the amount of time between when this iteration of
                     * the cron workflow was scheduled and when it should run next per its cron_schedule.
                     */
                    public firstWorkflowTaskBackoff?: (google.protobuf.IDuration|null);

                    /** WorkflowExecutionStartedEventAttributes memo. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** WorkflowExecutionStartedEventAttributes searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** WorkflowExecutionStartedEventAttributes prevAutoResetPoints. */
                    public prevAutoResetPoints?: (temporal.api.workflow.v1.IResetPoints|null);

                    /** WorkflowExecutionStartedEventAttributes header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Version of the child execution initiated event in parent workflow
                     * It should be used together with parent_initiated_event_id to identify
                     * a child initiated event for global namespace
                     */
                    public parentInitiatedEventVersion: Long;

                    /** This field is new in 1.21. */
                    public workflowId: string;

                    /**
                     * If this workflow intends to use anything other than the current overall default version for
                     * the queue, then we include it here.
                     * Deprecated. [cleanup-experimental-wv]
                     */
                    public sourceVersionStamp?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /** Completion callbacks attached when this workflow was started. */
                    public completionCallbacks: temporal.api.common.v1.ICallback[];

                    /**
                     * Contains information about the root workflow execution.
                     * The root workflow execution is defined as follows:
                     * 1. A workflow without parent workflow is its own root workflow.
                     * 2. A workflow that has a parent workflow has the same root workflow as its parent workflow.
                     * When the workflow is its own root workflow, then root_workflow_execution is nil.
                     * Note: workflows continued as new or reseted may or may not have parents, check examples below.
                     *
                     * Examples:
                     * Scenario 1: Workflow W1 starts child workflow W2, and W2 starts child workflow W3.
                     * - The root workflow of all three workflows is W1.
                     * - W1 has root_workflow_execution set to nil.
                     * - W2 and W3 have root_workflow_execution set to W1.
                     * Scenario 2: Workflow W1 starts child workflow W2, and W2 continued as new W3.
                     * - The root workflow of all three workflows is W1.
                     * - W1 has root_workflow_execution set to nil.
                     * - W2 and W3 have root_workflow_execution set to W1.
                     * Scenario 3: Workflow W1 continued as new W2.
                     * - The root workflow of W1 is W1 and the root workflow of W2 is W2.
                     * - W1 and W2 have root_workflow_execution set to nil.
                     * Scenario 4: Workflow W1 starts child workflow W2, and W2 is reseted, creating W3
                     * - The root workflow of all three workflows is W1.
                     * - W1 has root_workflow_execution set to nil.
                     * - W2 and W3 have root_workflow_execution set to W1.
                     * Scenario 5: Workflow W1 is reseted, creating W2.
                     * - The root workflow of W1 is W1 and the root workflow of W2 is W2.
                     * - W1 and W2 have root_workflow_execution set to nil.
                     */
                    public rootWorkflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * When present, this execution is assigned to the build ID of its parent or previous execution.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public inheritedBuildId: string;

                    /**
                     * Versioning override applied to this workflow when it was started.
                     * Children, crons, retries, and continue-as-new will inherit source run's override if pinned
                     * and if the new workflow's Task Queue belongs to the override version.
                     */
                    public versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /**
                     * When present, it means this is a child workflow of a parent that is Pinned to this Worker
                     * Deployment Version. In this case, child workflow will start as Pinned to this Version instead
                     * of starting on the Current Version of its Task Queue.
                     * This is set only if the child workflow is starting on a Task Queue belonging to the same
                     * Worker Deployment Version.
                     * Deprecated. Use `parent_versioning_info`.
                     */
                    public parentPinnedWorkerDeploymentVersion: string;

                    /** Priority metadata */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * If present, the new workflow should start on this version with pinned base behavior.
                     * Child of pinned parent will inherit the parent's version if the Child's Task Queue belongs to that version.
                     *
                     * A new run initiated by workflow ContinueAsNew of pinned run, will inherit the previous run's version if the
                     * new run's Task Queue belongs to that version.
                     *
                     * A new run initiated by workflow Cron will never inherit.
                     *
                     * A new run initiated by workflow Retry will only inherit if the retried run is effectively pinned at the time
                     * of retry, and the retried run inherited a pinned version when it started (ie. it is a child of a pinned
                     * parent, or a CaN of a pinned run, and is running on a Task Queue in the inherited version).
                     *
                     * Pinned override is inherited if Task Queue of new run is compatible with the override version.
                     * Override is inherited separately and takes precedence over inherited base version.
                     *
                     * Note: This field is mutually exclusive with inherited_auto_upgrade_info.
                     * Additionaly, versioning_override, if present, overrides this field during routing decisions.
                     */
                    public inheritedPinnedVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * If present, the new workflow begins with AutoUpgrade behavior. Before dispatching the
                     * first workflow task, this field is set to the deployment version on which the parent/
                     * previous run was operating. This inheritance only happens when the task queues belong to
                     * the same deployment version. The first workflow task will then be dispatched to either
                     * this inherited deployment version, or the current deployment version of the task queue's
                     * Deployment. After the first workflow task, the effective behavior depends on worker-sent
                     * values in subsequent workflow tasks.
                     *
                     * Inheritance rules:
                     * - ContinueAsNew and child workflows: inherit AutoUpgrade behavior and deployment version
                     * - Cron: never inherits
                     * - Retry: inherits only if the retried run is effectively AutoUpgrade at the time of
                     * retry, and inherited AutoUpgrade behavior when it started (i.e. it is a child of an
                     * AutoUpgrade parent or ContinueAsNew of an AutoUpgrade run, running on the same
                     * deployment as the parent/previous run)
                     *
                     * Additional notes:
                     * - This field is mutually exclusive with `inherited_pinned_version`.
                     * - `versioning_override`, if present, overrides this field during routing decisions.
                     * - SDK implementations do not interact with this field and is only used internally by
                     * the server to ensure task routing correctness.
                     */
                    public inheritedAutoUpgradeInfo?: (temporal.api.deployment.v1.IInheritedAutoUpgradeInfo|null);

                    /**
                     * A boolean indicating whether the SDK has asked to eagerly execute the first workflow task for this workflow and
                     * eager execution was accepted by the server.
                     * Only populated by server with version >= 1.29.0.
                     */
                    public eagerExecutionAccepted: boolean;

                    /**
                     * Creates a new WorkflowExecutionStartedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionStartedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionStartedEventAttributes): temporal.api.history.v1.WorkflowExecutionStartedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionStartedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionStartedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionStartedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionStartedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionStartedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionStartedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionStartedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionStartedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionStartedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionStartedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionStartedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionStartedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionStartedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionStartedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionStartedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionStartedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionStartedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionStartedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionCompletedEventAttributes. */
                interface IWorkflowExecutionCompletedEventAttributes {

                    /** Serialized result of workflow completion (ie: The return value of the workflow function) */
                    result?: (temporal.api.common.v1.IPayloads|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /** If another run is started by cron, this contains the new run id. */
                    newExecutionRunId?: (string|null);
                }

                /** Represents a WorkflowExecutionCompletedEventAttributes. */
                class WorkflowExecutionCompletedEventAttributes implements IWorkflowExecutionCompletedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionCompletedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionCompletedEventAttributes);

                    /** Serialized result of workflow completion (ie: The return value of the workflow function) */
                    public result?: (temporal.api.common.v1.IPayloads|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /** If another run is started by cron, this contains the new run id. */
                    public newExecutionRunId: string;

                    /**
                     * Creates a new WorkflowExecutionCompletedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionCompletedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionCompletedEventAttributes): temporal.api.history.v1.WorkflowExecutionCompletedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionCompletedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionCompletedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionCompletedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionCompletedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionCompletedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionCompletedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionCompletedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionCompletedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionCompletedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionCompletedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionCompletedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionCompletedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionCompletedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionCompletedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionCompletedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionCompletedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionCompletedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionCompletedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionFailedEventAttributes. */
                interface IWorkflowExecutionFailedEventAttributes {

                    /** Serialized result of workflow failure (ex: An exception thrown, or error returned) */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /** WorkflowExecutionFailedEventAttributes retryState */
                    retryState?: (temporal.api.enums.v1.RetryState|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /** If another run is started by cron or retry, this contains the new run id. */
                    newExecutionRunId?: (string|null);
                }

                /** Represents a WorkflowExecutionFailedEventAttributes. */
                class WorkflowExecutionFailedEventAttributes implements IWorkflowExecutionFailedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionFailedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionFailedEventAttributes);

                    /** Serialized result of workflow failure (ex: An exception thrown, or error returned) */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** WorkflowExecutionFailedEventAttributes retryState. */
                    public retryState: temporal.api.enums.v1.RetryState;

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /** If another run is started by cron or retry, this contains the new run id. */
                    public newExecutionRunId: string;

                    /**
                     * Creates a new WorkflowExecutionFailedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionFailedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionFailedEventAttributes): temporal.api.history.v1.WorkflowExecutionFailedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionFailedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionFailedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionFailedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionFailedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionFailedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionFailedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionFailedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionFailedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionFailedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionFailedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionFailedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionFailedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionFailedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionFailedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionFailedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionFailedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionFailedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionFailedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionTimedOutEventAttributes. */
                interface IWorkflowExecutionTimedOutEventAttributes {

                    /** WorkflowExecutionTimedOutEventAttributes retryState */
                    retryState?: (temporal.api.enums.v1.RetryState|null);

                    /** If another run is started by cron or retry, this contains the new run id. */
                    newExecutionRunId?: (string|null);
                }

                /** Represents a WorkflowExecutionTimedOutEventAttributes. */
                class WorkflowExecutionTimedOutEventAttributes implements IWorkflowExecutionTimedOutEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionTimedOutEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionTimedOutEventAttributes);

                    /** WorkflowExecutionTimedOutEventAttributes retryState. */
                    public retryState: temporal.api.enums.v1.RetryState;

                    /** If another run is started by cron or retry, this contains the new run id. */
                    public newExecutionRunId: string;

                    /**
                     * Creates a new WorkflowExecutionTimedOutEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionTimedOutEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionTimedOutEventAttributes): temporal.api.history.v1.WorkflowExecutionTimedOutEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionTimedOutEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionTimedOutEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionTimedOutEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionTimedOutEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionTimedOutEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionTimedOutEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionTimedOutEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionTimedOutEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionTimedOutEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionTimedOutEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionTimedOutEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionTimedOutEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionTimedOutEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionTimedOutEventAttributes;

                    /**
                     * Creates a WorkflowExecutionTimedOutEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionTimedOutEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionTimedOutEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionTimedOutEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionTimedOutEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionTimedOutEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionTimedOutEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionTimedOutEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionContinuedAsNewEventAttributes. */
                interface IWorkflowExecutionContinuedAsNewEventAttributes {

                    /** The run ID of the new workflow started by this continue-as-new */
                    newExecutionRunId?: (string|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes input */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** Timeout of a single workflow run. */
                    workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /**
                     * How long the server will wait before scheduling the first workflow task for the new run.
                     * Used for cron, retry, and other continue-as-new cases that server may enforce some minimal
                     * delay between new runs for system protection purpose.
                     */
                    backoffStartInterval?: (google.protobuf.IDuration|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes initiator */
                    initiator?: (temporal.api.enums.v1.ContinueAsNewInitiator|null);

                    /**
                     * Deprecated. If a workflow's retry policy would cause a new run to start when the current one
                     * has failed, this field would be populated with that failure. Now (when supported by server
                     * and sdk) the final event will be `WORKFLOW_EXECUTION_FAILED` with `new_execution_run_id` set.
                     */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * The result from the most recent completed run of this workflow. The SDK surfaces this to the
                     * new run via APIs such as `GetLastCompletionResult`.
                     */
                    lastCompletionResult?: (temporal.api.common.v1.IPayloads|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes memo */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * If this is set, the new execution inherits the Build ID of the current execution. Otherwise,
                     * the assignment rules will be used to independently assign a Build ID to the new execution.
                     * Deprecated. Only considered for versioning v0.2.
                     */
                    inheritBuildId?: (boolean|null);

                    /**
                     * Experimental. Optionally decide the versioning behavior that the first task of the new run should use.
                     * For example, choose to AutoUpgrade on continue-as-new instead of inheriting the pinned version
                     * of the previous run.
                     */
                    initialVersioningBehavior?: (temporal.api.enums.v1.ContinueAsNewVersioningBehavior|null);
                }

                /** Represents a WorkflowExecutionContinuedAsNewEventAttributes. */
                class WorkflowExecutionContinuedAsNewEventAttributes implements IWorkflowExecutionContinuedAsNewEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionContinuedAsNewEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionContinuedAsNewEventAttributes);

                    /** The run ID of the new workflow started by this continue-as-new */
                    public newExecutionRunId: string;

                    /** WorkflowExecutionContinuedAsNewEventAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes input. */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** Timeout of a single workflow run. */
                    public workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    public workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * How long the server will wait before scheduling the first workflow task for the new run.
                     * Used for cron, retry, and other continue-as-new cases that server may enforce some minimal
                     * delay between new runs for system protection purpose.
                     */
                    public backoffStartInterval?: (google.protobuf.IDuration|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes initiator. */
                    public initiator: temporal.api.enums.v1.ContinueAsNewInitiator;

                    /**
                     * Deprecated. If a workflow's retry policy would cause a new run to start when the current one
                     * has failed, this field would be populated with that failure. Now (when supported by server
                     * and sdk) the final event will be `WORKFLOW_EXECUTION_FAILED` with `new_execution_run_id` set.
                     */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * The result from the most recent completed run of this workflow. The SDK surfaces this to the
                     * new run via APIs such as `GetLastCompletionResult`.
                     */
                    public lastCompletionResult?: (temporal.api.common.v1.IPayloads|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes memo. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** WorkflowExecutionContinuedAsNewEventAttributes searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * If this is set, the new execution inherits the Build ID of the current execution. Otherwise,
                     * the assignment rules will be used to independently assign a Build ID to the new execution.
                     * Deprecated. Only considered for versioning v0.2.
                     */
                    public inheritBuildId: boolean;

                    /**
                     * Experimental. Optionally decide the versioning behavior that the first task of the new run should use.
                     * For example, choose to AutoUpgrade on continue-as-new instead of inheriting the pinned version
                     * of the previous run.
                     */
                    public initialVersioningBehavior: temporal.api.enums.v1.ContinueAsNewVersioningBehavior;

                    /**
                     * Creates a new WorkflowExecutionContinuedAsNewEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionContinuedAsNewEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionContinuedAsNewEventAttributes): temporal.api.history.v1.WorkflowExecutionContinuedAsNewEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionContinuedAsNewEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionContinuedAsNewEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionContinuedAsNewEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionContinuedAsNewEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionContinuedAsNewEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionContinuedAsNewEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionContinuedAsNewEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionContinuedAsNewEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionContinuedAsNewEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionContinuedAsNewEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionContinuedAsNewEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionContinuedAsNewEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionContinuedAsNewEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionContinuedAsNewEventAttributes;

                    /**
                     * Creates a WorkflowExecutionContinuedAsNewEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionContinuedAsNewEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionContinuedAsNewEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionContinuedAsNewEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionContinuedAsNewEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionContinuedAsNewEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionContinuedAsNewEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionContinuedAsNewEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowTaskScheduledEventAttributes. */
                interface IWorkflowTaskScheduledEventAttributes {

                    /** The task queue this workflow task was enqueued in, which could be a normal or sticky queue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * How long the worker has to process this task once receiving it before it times out
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Starting at 1, how many attempts there have been to complete this task */
                    attempt?: (number|null);
                }

                /** Represents a WorkflowTaskScheduledEventAttributes. */
                class WorkflowTaskScheduledEventAttributes implements IWorkflowTaskScheduledEventAttributes {

                    /**
                     * Constructs a new WorkflowTaskScheduledEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowTaskScheduledEventAttributes);

                    /** The task queue this workflow task was enqueued in, which could be a normal or sticky queue */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /**
                     * How long the worker has to process this task once receiving it before it times out
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Starting at 1, how many attempts there have been to complete this task */
                    public attempt: number;

                    /**
                     * Creates a new WorkflowTaskScheduledEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowTaskScheduledEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowTaskScheduledEventAttributes): temporal.api.history.v1.WorkflowTaskScheduledEventAttributes;

                    /**
                     * Encodes the specified WorkflowTaskScheduledEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowTaskScheduledEventAttributes.verify|verify} messages.
                     * @param message WorkflowTaskScheduledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowTaskScheduledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowTaskScheduledEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowTaskScheduledEventAttributes.verify|verify} messages.
                     * @param message WorkflowTaskScheduledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowTaskScheduledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowTaskScheduledEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowTaskScheduledEventAttributes
                     * @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): temporal.api.history.v1.WorkflowTaskScheduledEventAttributes;

                    /**
                     * Decodes a WorkflowTaskScheduledEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowTaskScheduledEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowTaskScheduledEventAttributes;

                    /**
                     * Creates a WorkflowTaskScheduledEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowTaskScheduledEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowTaskScheduledEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowTaskScheduledEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowTaskScheduledEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowTaskScheduledEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowTaskScheduledEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowTaskScheduledEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowTaskStartedEventAttributes. */
                interface IWorkflowTaskStartedEventAttributes {

                    /** The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to */
                    scheduledEventId?: (Long|null);

                    /** Identity of the worker who picked up this task */
                    identity?: (string|null);

                    /**
                     * This field is populated from the RecordWorkflowTaskStartedRequest. Matching service would
                     * set the request_id on the RecordWorkflowTaskStartedRequest to a new UUID. This is useful
                     * in case a RecordWorkflowTaskStarted call succeed but matching doesn't get that response,
                     * so matching could retry and history service would return success if the request_id matches.
                     * In that case, matching will continue to deliver the task to worker. Without this field, history
                     * service would return AlreadyStarted error, and matching would drop the task.
                     */
                    requestId?: (string|null);

                    /** True if this workflow should continue-as-new soon. See `suggest_continue_as_new_reasons` for why. */
                    suggestContinueAsNew?: (boolean|null);

                    /**
                     * The reason(s) that suggest_continue_as_new is true, if it is.
                     * Unset if suggest_continue_as_new is false.
                     */
                    suggestContinueAsNewReasons?: (temporal.api.enums.v1.SuggestContinueAsNewReason[]|null);

                    /**
                     * True if Workflow's Target Worker Deployment Version is different from its Pinned Version and
                     * the workflow is Pinned.
                     * Experimental.
                     */
                    targetWorkerDeploymentVersionChanged?: (boolean|null);

                    /**
                     * Total history size in bytes, which the workflow might use to decide when to
                     * continue-as-new regardless of the suggestion. Note that history event count is
                     * just the event id of this event, so we don't include it explicitly here.
                     */
                    historySizeBytes?: (Long|null);

                    /**
                     * Version info of the worker to whom this task was dispatched.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Used by server internally to properly reapply build ID redirects to an execution
                     * when rebuilding it from events.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    buildIdRedirectCounter?: (Long|null);
                }

                /** Represents a WorkflowTaskStartedEventAttributes. */
                class WorkflowTaskStartedEventAttributes implements IWorkflowTaskStartedEventAttributes {

                    /**
                     * Constructs a new WorkflowTaskStartedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowTaskStartedEventAttributes);

                    /** The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to */
                    public scheduledEventId: Long;

                    /** Identity of the worker who picked up this task */
                    public identity: string;

                    /**
                     * This field is populated from the RecordWorkflowTaskStartedRequest. Matching service would
                     * set the request_id on the RecordWorkflowTaskStartedRequest to a new UUID. This is useful
                     * in case a RecordWorkflowTaskStarted call succeed but matching doesn't get that response,
                     * so matching could retry and history service would return success if the request_id matches.
                     * In that case, matching will continue to deliver the task to worker. Without this field, history
                     * service would return AlreadyStarted error, and matching would drop the task.
                     */
                    public requestId: string;

                    /** True if this workflow should continue-as-new soon. See `suggest_continue_as_new_reasons` for why. */
                    public suggestContinueAsNew: boolean;

                    /**
                     * The reason(s) that suggest_continue_as_new is true, if it is.
                     * Unset if suggest_continue_as_new is false.
                     */
                    public suggestContinueAsNewReasons: temporal.api.enums.v1.SuggestContinueAsNewReason[];

                    /**
                     * True if Workflow's Target Worker Deployment Version is different from its Pinned Version and
                     * the workflow is Pinned.
                     * Experimental.
                     */
                    public targetWorkerDeploymentVersionChanged: boolean;

                    /**
                     * Total history size in bytes, which the workflow might use to decide when to
                     * continue-as-new regardless of the suggestion. Note that history event count is
                     * just the event id of this event, so we don't include it explicitly here.
                     */
                    public historySizeBytes: Long;

                    /**
                     * Version info of the worker to whom this task was dispatched.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Used by server internally to properly reapply build ID redirects to an execution
                     * when rebuilding it from events.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public buildIdRedirectCounter: Long;

                    /**
                     * Creates a new WorkflowTaskStartedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowTaskStartedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowTaskStartedEventAttributes): temporal.api.history.v1.WorkflowTaskStartedEventAttributes;

                    /**
                     * Encodes the specified WorkflowTaskStartedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowTaskStartedEventAttributes.verify|verify} messages.
                     * @param message WorkflowTaskStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowTaskStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowTaskStartedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowTaskStartedEventAttributes.verify|verify} messages.
                     * @param message WorkflowTaskStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowTaskStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowTaskStartedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowTaskStartedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowTaskStartedEventAttributes;

                    /**
                     * Decodes a WorkflowTaskStartedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowTaskStartedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowTaskStartedEventAttributes;

                    /**
                     * Creates a WorkflowTaskStartedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowTaskStartedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowTaskStartedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowTaskStartedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowTaskStartedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowTaskStartedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowTaskStartedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowTaskStartedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowTaskCompletedEventAttributes. */
                interface IWorkflowTaskCompletedEventAttributes {

                    /** The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to */
                    scheduledEventId?: (Long|null);

                    /** The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to */
                    startedEventId?: (Long|null);

                    /** Identity of the worker who completed this task */
                    identity?: (string|null);

                    /**
                     * Binary ID of the worker who completed this task
                     * Deprecated. Replaced with `deployment_version`.
                     */
                    binaryChecksum?: (string|null);

                    /**
                     * Version info of the worker who processed this workflow task. If present, the `build_id` field
                     * within is also used as `binary_checksum`, which may be omitted in that case (it may also be
                     * populated to preserve compatibility).
                     * Deprecated. Use `deployment_version` and `versioning_behavior` instead.
                     */
                    workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Data the SDK wishes to record for itself, but server need not interpret, and does not
                     * directly impact workflow state.
                     */
                    sdkMetadata?: (temporal.api.sdk.v1.IWorkflowTaskCompletedMetadata|null);

                    /** Local usage data sent during workflow task completion and recorded here for posterity */
                    meteringMetadata?: (temporal.api.common.v1.IMeteringMetadata|null);

                    /**
                     * The deployment that completed this task. May or may not be set for unversioned workers,
                     * depending on whether a value is sent by the SDK. This value updates workflow execution's
                     * `versioning_info.deployment`.
                     * Deprecated. Replaced with `deployment_version`.
                     */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /**
                     * Versioning behavior sent by the worker that completed this task for this particular workflow
                     * execution. UNSPECIFIED means the task was completed by an unversioned worker. This value
                     * updates workflow execution's `versioning_info.behavior`.
                     */
                    versioningBehavior?: (temporal.api.enums.v1.VersioningBehavior|null);

                    /**
                     * The Worker Deployment Version that completed this task. Must be set if `versioning_behavior`
                     * is set. This value updates workflow execution's `versioning_info.version`.
                     * Experimental. Worker Deployments are experimental and might significantly change in the future.
                     * Deprecated. Replaced with `deployment_version`.
                     */
                    workerDeploymentVersion?: (string|null);

                    /**
                     * The name of Worker Deployment that completed this task. Must be set if `versioning_behavior`
                     * is set. This value updates workflow execution's `worker_deployment_name`.
                     * Experimental. Worker Deployments are experimental and might significantly change in the future.
                     */
                    workerDeploymentName?: (string|null);

                    /**
                     * The Worker Deployment Version that completed this task. Must be set if `versioning_behavior`
                     * is set. This value updates workflow execution's `versioning_info.deployment_version`.
                     * Experimental. Worker Deployments are experimental and might significantly change in the future.
                     */
                    deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);
                }

                /** Represents a WorkflowTaskCompletedEventAttributes. */
                class WorkflowTaskCompletedEventAttributes implements IWorkflowTaskCompletedEventAttributes {

                    /**
                     * Constructs a new WorkflowTaskCompletedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowTaskCompletedEventAttributes);

                    /** The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to */
                    public scheduledEventId: Long;

                    /** The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to */
                    public startedEventId: Long;

                    /** Identity of the worker who completed this task */
                    public identity: string;

                    /**
                     * Binary ID of the worker who completed this task
                     * Deprecated. Replaced with `deployment_version`.
                     */
                    public binaryChecksum: string;

                    /**
                     * Version info of the worker who processed this workflow task. If present, the `build_id` field
                     * within is also used as `binary_checksum`, which may be omitted in that case (it may also be
                     * populated to preserve compatibility).
                     * Deprecated. Use `deployment_version` and `versioning_behavior` instead.
                     */
                    public workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Data the SDK wishes to record for itself, but server need not interpret, and does not
                     * directly impact workflow state.
                     */
                    public sdkMetadata?: (temporal.api.sdk.v1.IWorkflowTaskCompletedMetadata|null);

                    /** Local usage data sent during workflow task completion and recorded here for posterity */
                    public meteringMetadata?: (temporal.api.common.v1.IMeteringMetadata|null);

                    /**
                     * The deployment that completed this task. May or may not be set for unversioned workers,
                     * depending on whether a value is sent by the SDK. This value updates workflow execution's
                     * `versioning_info.deployment`.
                     * Deprecated. Replaced with `deployment_version`.
                     */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /**
                     * Versioning behavior sent by the worker that completed this task for this particular workflow
                     * execution. UNSPECIFIED means the task was completed by an unversioned worker. This value
                     * updates workflow execution's `versioning_info.behavior`.
                     */
                    public versioningBehavior: temporal.api.enums.v1.VersioningBehavior;

                    /**
                     * The Worker Deployment Version that completed this task. Must be set if `versioning_behavior`
                     * is set. This value updates workflow execution's `versioning_info.version`.
                     * Experimental. Worker Deployments are experimental and might significantly change in the future.
                     * Deprecated. Replaced with `deployment_version`.
                     */
                    public workerDeploymentVersion: string;

                    /**
                     * The name of Worker Deployment that completed this task. Must be set if `versioning_behavior`
                     * is set. This value updates workflow execution's `worker_deployment_name`.
                     * Experimental. Worker Deployments are experimental and might significantly change in the future.
                     */
                    public workerDeploymentName: string;

                    /**
                     * The Worker Deployment Version that completed this task. Must be set if `versioning_behavior`
                     * is set. This value updates workflow execution's `versioning_info.deployment_version`.
                     * Experimental. Worker Deployments are experimental and might significantly change in the future.
                     */
                    public deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * Creates a new WorkflowTaskCompletedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowTaskCompletedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowTaskCompletedEventAttributes): temporal.api.history.v1.WorkflowTaskCompletedEventAttributes;

                    /**
                     * Encodes the specified WorkflowTaskCompletedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowTaskCompletedEventAttributes.verify|verify} messages.
                     * @param message WorkflowTaskCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowTaskCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowTaskCompletedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowTaskCompletedEventAttributes.verify|verify} messages.
                     * @param message WorkflowTaskCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowTaskCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowTaskCompletedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowTaskCompletedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowTaskCompletedEventAttributes;

                    /**
                     * Decodes a WorkflowTaskCompletedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowTaskCompletedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowTaskCompletedEventAttributes;

                    /**
                     * Creates a WorkflowTaskCompletedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowTaskCompletedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowTaskCompletedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowTaskCompletedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowTaskCompletedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowTaskCompletedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowTaskCompletedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowTaskCompletedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowTaskTimedOutEventAttributes. */
                interface IWorkflowTaskTimedOutEventAttributes {

                    /** The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to */
                    scheduledEventId?: (Long|null);

                    /** The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to */
                    startedEventId?: (Long|null);

                    /** WorkflowTaskTimedOutEventAttributes timeoutType */
                    timeoutType?: (temporal.api.enums.v1.TimeoutType|null);
                }

                /** Represents a WorkflowTaskTimedOutEventAttributes. */
                class WorkflowTaskTimedOutEventAttributes implements IWorkflowTaskTimedOutEventAttributes {

                    /**
                     * Constructs a new WorkflowTaskTimedOutEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowTaskTimedOutEventAttributes);

                    /** The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to */
                    public scheduledEventId: Long;

                    /** The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to */
                    public startedEventId: Long;

                    /** WorkflowTaskTimedOutEventAttributes timeoutType. */
                    public timeoutType: temporal.api.enums.v1.TimeoutType;

                    /**
                     * Creates a new WorkflowTaskTimedOutEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowTaskTimedOutEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowTaskTimedOutEventAttributes): temporal.api.history.v1.WorkflowTaskTimedOutEventAttributes;

                    /**
                     * Encodes the specified WorkflowTaskTimedOutEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowTaskTimedOutEventAttributes.verify|verify} messages.
                     * @param message WorkflowTaskTimedOutEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowTaskTimedOutEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowTaskTimedOutEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowTaskTimedOutEventAttributes.verify|verify} messages.
                     * @param message WorkflowTaskTimedOutEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowTaskTimedOutEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowTaskTimedOutEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowTaskTimedOutEventAttributes
                     * @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): temporal.api.history.v1.WorkflowTaskTimedOutEventAttributes;

                    /**
                     * Decodes a WorkflowTaskTimedOutEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowTaskTimedOutEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowTaskTimedOutEventAttributes;

                    /**
                     * Creates a WorkflowTaskTimedOutEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowTaskTimedOutEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowTaskTimedOutEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowTaskTimedOutEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowTaskTimedOutEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowTaskTimedOutEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowTaskTimedOutEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowTaskTimedOutEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowTaskFailedEventAttributes. */
                interface IWorkflowTaskFailedEventAttributes {

                    /** The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to */
                    scheduledEventId?: (Long|null);

                    /** The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to */
                    startedEventId?: (Long|null);

                    /** WorkflowTaskFailedEventAttributes cause */
                    cause?: (temporal.api.enums.v1.WorkflowTaskFailedCause|null);

                    /** The failure details */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * If a worker explicitly failed this task, this field contains the worker's identity.
                     * When the server generates the failure internally this field is set as 'history-service'.
                     */
                    identity?: (string|null);

                    /** The original run id of the workflow. For reset workflow. */
                    baseRunId?: (string|null);

                    /** If the workflow is being reset, the new run id. */
                    newRunId?: (string|null);

                    /**
                     * Version of the event where the history branch was forked. Used by multi-cluster replication
                     * during resets to identify the correct history branch.
                     */
                    forkEventVersion?: (Long|null);

                    /**
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     * If a worker explicitly failed this task, its binary id
                     */
                    binaryChecksum?: (string|null);

                    /**
                     * Version info of the worker who processed this workflow task. If present, the `build_id` field
                     * within is also used as `binary_checksum`, which may be omitted in that case (it may also be
                     * populated to preserve compatibility).
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);
                }

                /** Represents a WorkflowTaskFailedEventAttributes. */
                class WorkflowTaskFailedEventAttributes implements IWorkflowTaskFailedEventAttributes {

                    /**
                     * Constructs a new WorkflowTaskFailedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowTaskFailedEventAttributes);

                    /** The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to */
                    public scheduledEventId: Long;

                    /** The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to */
                    public startedEventId: Long;

                    /** WorkflowTaskFailedEventAttributes cause. */
                    public cause: temporal.api.enums.v1.WorkflowTaskFailedCause;

                    /** The failure details */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * If a worker explicitly failed this task, this field contains the worker's identity.
                     * When the server generates the failure internally this field is set as 'history-service'.
                     */
                    public identity: string;

                    /** The original run id of the workflow. For reset workflow. */
                    public baseRunId: string;

                    /** If the workflow is being reset, the new run id. */
                    public newRunId: string;

                    /**
                     * Version of the event where the history branch was forked. Used by multi-cluster replication
                     * during resets to identify the correct history branch.
                     */
                    public forkEventVersion: Long;

                    /**
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     * If a worker explicitly failed this task, its binary id
                     */
                    public binaryChecksum: string;

                    /**
                     * Version info of the worker who processed this workflow task. If present, the `build_id` field
                     * within is also used as `binary_checksum`, which may be omitted in that case (it may also be
                     * populated to preserve compatibility).
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Creates a new WorkflowTaskFailedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowTaskFailedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowTaskFailedEventAttributes): temporal.api.history.v1.WorkflowTaskFailedEventAttributes;

                    /**
                     * Encodes the specified WorkflowTaskFailedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowTaskFailedEventAttributes.verify|verify} messages.
                     * @param message WorkflowTaskFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowTaskFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowTaskFailedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowTaskFailedEventAttributes.verify|verify} messages.
                     * @param message WorkflowTaskFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowTaskFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowTaskFailedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowTaskFailedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowTaskFailedEventAttributes;

                    /**
                     * Decodes a WorkflowTaskFailedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowTaskFailedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowTaskFailedEventAttributes;

                    /**
                     * Creates a WorkflowTaskFailedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowTaskFailedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowTaskFailedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowTaskFailedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowTaskFailedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowTaskFailedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowTaskFailedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowTaskFailedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityTaskScheduledEventAttributes. */
                interface IActivityTaskScheduledEventAttributes {

                    /** The worker/user assigned identifier for the activity */
                    activityId?: (string|null);

                    /** ActivityTaskScheduledEventAttributes activityType */
                    activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** ActivityTaskScheduledEventAttributes taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** ActivityTaskScheduledEventAttributes header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** ActivityTaskScheduledEventAttributes input */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Indicates how long the caller is willing to wait for an activity completion. Limits how long
                     * retries will be attempted. Either this or `start_to_close_timeout` must be specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Limits time an activity task can stay in a task queue before a worker picks it up. This
                     * timeout is always non retryable, as all a retry would achieve is to put it back into the same
                     * queue. Defaults to `schedule_to_close_timeout` or workflow execution timeout if not
                     * specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum time an activity is allowed to execute after being picked up by a worker. This
                     * timeout is always retryable. Either this or `schedule_to_close_timeout` must be
                     * specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Maximum permitted time between successful worker heartbeats. */
                    heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /**
                     * Activities are assigned a default retry policy controlled by the service's dynamic
                     * configuration. Retries will happen up to `schedule_to_close_timeout`. To disable retries set
                     * retry_policy.maximum_attempts to 1.
                     */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /**
                     * If this is set, the activity would be assigned to the Build ID of the workflow. Otherwise,
                     * Assignment rules of the activity's Task Queue will be used to determine the Build ID.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    useWorkflowBuildId?: (boolean|null);

                    /**
                     * Priority metadata. If this message is not present, or any fields are not
                     * present, they inherit the values from the workflow.
                     */
                    priority?: (temporal.api.common.v1.IPriority|null);
                }

                /** Represents an ActivityTaskScheduledEventAttributes. */
                class ActivityTaskScheduledEventAttributes implements IActivityTaskScheduledEventAttributes {

                    /**
                     * Constructs a new ActivityTaskScheduledEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IActivityTaskScheduledEventAttributes);

                    /** The worker/user assigned identifier for the activity */
                    public activityId: string;

                    /** ActivityTaskScheduledEventAttributes activityType. */
                    public activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** ActivityTaskScheduledEventAttributes taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** ActivityTaskScheduledEventAttributes header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** ActivityTaskScheduledEventAttributes input. */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Indicates how long the caller is willing to wait for an activity completion. Limits how long
                     * retries will be attempted. Either this or `start_to_close_timeout` must be specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Limits time an activity task can stay in a task queue before a worker picks it up. This
                     * timeout is always non retryable, as all a retry would achieve is to put it back into the same
                     * queue. Defaults to `schedule_to_close_timeout` or workflow execution timeout if not
                     * specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum time an activity is allowed to execute after being picked up by a worker. This
                     * timeout is always retryable. Either this or `schedule_to_close_timeout` must be
                     * specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Maximum permitted time between successful worker heartbeats. */
                    public heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * Activities are assigned a default retry policy controlled by the service's dynamic
                     * configuration. Retries will happen up to `schedule_to_close_timeout`. To disable retries set
                     * retry_policy.maximum_attempts to 1.
                     */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /**
                     * If this is set, the activity would be assigned to the Build ID of the workflow. Otherwise,
                     * Assignment rules of the activity's Task Queue will be used to determine the Build ID.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public useWorkflowBuildId: boolean;

                    /**
                     * Priority metadata. If this message is not present, or any fields are not
                     * present, they inherit the values from the workflow.
                     */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * Creates a new ActivityTaskScheduledEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityTaskScheduledEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IActivityTaskScheduledEventAttributes): temporal.api.history.v1.ActivityTaskScheduledEventAttributes;

                    /**
                     * Encodes the specified ActivityTaskScheduledEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ActivityTaskScheduledEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskScheduledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IActivityTaskScheduledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityTaskScheduledEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ActivityTaskScheduledEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskScheduledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IActivityTaskScheduledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityTaskScheduledEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityTaskScheduledEventAttributes
                     * @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): temporal.api.history.v1.ActivityTaskScheduledEventAttributes;

                    /**
                     * Decodes an ActivityTaskScheduledEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityTaskScheduledEventAttributes
                     * @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)): temporal.api.history.v1.ActivityTaskScheduledEventAttributes;

                    /**
                     * Creates an ActivityTaskScheduledEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityTaskScheduledEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ActivityTaskScheduledEventAttributes;

                    /**
                     * Creates a plain object from an ActivityTaskScheduledEventAttributes message. Also converts values to other types if specified.
                     * @param message ActivityTaskScheduledEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ActivityTaskScheduledEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityTaskScheduledEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityTaskScheduledEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityTaskStartedEventAttributes. */
                interface IActivityTaskStartedEventAttributes {

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this task corresponds to */
                    scheduledEventId?: (Long|null);

                    /** id of the worker that picked up this task */
                    identity?: (string|null);

                    /**
                     * This field is populated from the RecordActivityTaskStartedRequest. Matching service would
                     * set the request_id on the RecordActivityTaskStartedRequest to a new UUID. This is useful
                     * in case a RecordActivityTaskStarted call succeed but matching doesn't get that response,
                     * so matching could retry and history service would return success if the request_id matches.
                     * In that case, matching will continue to deliver the task to worker. Without this field, history
                     * service would return AlreadyStarted error, and matching would drop the task.
                     */
                    requestId?: (string|null);

                    /** Starting at 1, the number of times this task has been attempted */
                    attempt?: (number|null);

                    /**
                     * Will be set to the most recent failure details, if this task has previously failed and then
                     * been retried.
                     */
                    lastFailure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Version info of the worker to whom this task was dispatched.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Used by server internally to properly reapply build ID redirects to an execution
                     * when rebuilding it from events.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    buildIdRedirectCounter?: (Long|null);
                }

                /** Represents an ActivityTaskStartedEventAttributes. */
                class ActivityTaskStartedEventAttributes implements IActivityTaskStartedEventAttributes {

                    /**
                     * Constructs a new ActivityTaskStartedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IActivityTaskStartedEventAttributes);

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this task corresponds to */
                    public scheduledEventId: Long;

                    /** id of the worker that picked up this task */
                    public identity: string;

                    /**
                     * This field is populated from the RecordActivityTaskStartedRequest. Matching service would
                     * set the request_id on the RecordActivityTaskStartedRequest to a new UUID. This is useful
                     * in case a RecordActivityTaskStarted call succeed but matching doesn't get that response,
                     * so matching could retry and history service would return success if the request_id matches.
                     * In that case, matching will continue to deliver the task to worker. Without this field, history
                     * service would return AlreadyStarted error, and matching would drop the task.
                     */
                    public requestId: string;

                    /** Starting at 1, the number of times this task has been attempted */
                    public attempt: number;

                    /**
                     * Will be set to the most recent failure details, if this task has previously failed and then
                     * been retried.
                     */
                    public lastFailure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Version info of the worker to whom this task was dispatched.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Used by server internally to properly reapply build ID redirects to an execution
                     * when rebuilding it from events.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public buildIdRedirectCounter: Long;

                    /**
                     * Creates a new ActivityTaskStartedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityTaskStartedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IActivityTaskStartedEventAttributes): temporal.api.history.v1.ActivityTaskStartedEventAttributes;

                    /**
                     * Encodes the specified ActivityTaskStartedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ActivityTaskStartedEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IActivityTaskStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityTaskStartedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ActivityTaskStartedEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IActivityTaskStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityTaskStartedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityTaskStartedEventAttributes
                     * @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): temporal.api.history.v1.ActivityTaskStartedEventAttributes;

                    /**
                     * Decodes an ActivityTaskStartedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityTaskStartedEventAttributes
                     * @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)): temporal.api.history.v1.ActivityTaskStartedEventAttributes;

                    /**
                     * Creates an ActivityTaskStartedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityTaskStartedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ActivityTaskStartedEventAttributes;

                    /**
                     * Creates a plain object from an ActivityTaskStartedEventAttributes message. Also converts values to other types if specified.
                     * @param message ActivityTaskStartedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ActivityTaskStartedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityTaskStartedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityTaskStartedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityTaskCompletedEventAttributes. */
                interface IActivityTaskCompletedEventAttributes {

                    /** Serialized results of the activity. IE: The return value of the activity function */
                    result?: (temporal.api.common.v1.IPayloads|null);

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this completion corresponds to */
                    scheduledEventId?: (Long|null);

                    /** The id of the `ACTIVITY_TASK_STARTED` event this completion corresponds to */
                    startedEventId?: (Long|null);

                    /** id of the worker that completed this task */
                    identity?: (string|null);

                    /**
                     * Version info of the worker who processed this workflow task.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);
                }

                /** Represents an ActivityTaskCompletedEventAttributes. */
                class ActivityTaskCompletedEventAttributes implements IActivityTaskCompletedEventAttributes {

                    /**
                     * Constructs a new ActivityTaskCompletedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IActivityTaskCompletedEventAttributes);

                    /** Serialized results of the activity. IE: The return value of the activity function */
                    public result?: (temporal.api.common.v1.IPayloads|null);

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this completion corresponds to */
                    public scheduledEventId: Long;

                    /** The id of the `ACTIVITY_TASK_STARTED` event this completion corresponds to */
                    public startedEventId: Long;

                    /** id of the worker that completed this task */
                    public identity: string;

                    /**
                     * Version info of the worker who processed this workflow task.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Creates a new ActivityTaskCompletedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityTaskCompletedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IActivityTaskCompletedEventAttributes): temporal.api.history.v1.ActivityTaskCompletedEventAttributes;

                    /**
                     * Encodes the specified ActivityTaskCompletedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ActivityTaskCompletedEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IActivityTaskCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityTaskCompletedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ActivityTaskCompletedEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IActivityTaskCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityTaskCompletedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityTaskCompletedEventAttributes
                     * @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): temporal.api.history.v1.ActivityTaskCompletedEventAttributes;

                    /**
                     * Decodes an ActivityTaskCompletedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityTaskCompletedEventAttributes
                     * @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)): temporal.api.history.v1.ActivityTaskCompletedEventAttributes;

                    /**
                     * Creates an ActivityTaskCompletedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityTaskCompletedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ActivityTaskCompletedEventAttributes;

                    /**
                     * Creates a plain object from an ActivityTaskCompletedEventAttributes message. Also converts values to other types if specified.
                     * @param message ActivityTaskCompletedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ActivityTaskCompletedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityTaskCompletedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityTaskCompletedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityTaskFailedEventAttributes. */
                interface IActivityTaskFailedEventAttributes {

                    /** Failure details */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this failure corresponds to */
                    scheduledEventId?: (Long|null);

                    /** The id of the `ACTIVITY_TASK_STARTED` event this failure corresponds to */
                    startedEventId?: (Long|null);

                    /** id of the worker that failed this task */
                    identity?: (string|null);

                    /** ActivityTaskFailedEventAttributes retryState */
                    retryState?: (temporal.api.enums.v1.RetryState|null);

                    /**
                     * Version info of the worker who processed this workflow task.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);
                }

                /** Represents an ActivityTaskFailedEventAttributes. */
                class ActivityTaskFailedEventAttributes implements IActivityTaskFailedEventAttributes {

                    /**
                     * Constructs a new ActivityTaskFailedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IActivityTaskFailedEventAttributes);

                    /** Failure details */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this failure corresponds to */
                    public scheduledEventId: Long;

                    /** The id of the `ACTIVITY_TASK_STARTED` event this failure corresponds to */
                    public startedEventId: Long;

                    /** id of the worker that failed this task */
                    public identity: string;

                    /** ActivityTaskFailedEventAttributes retryState. */
                    public retryState: temporal.api.enums.v1.RetryState;

                    /**
                     * Version info of the worker who processed this workflow task.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Creates a new ActivityTaskFailedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityTaskFailedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IActivityTaskFailedEventAttributes): temporal.api.history.v1.ActivityTaskFailedEventAttributes;

                    /**
                     * Encodes the specified ActivityTaskFailedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ActivityTaskFailedEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IActivityTaskFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityTaskFailedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ActivityTaskFailedEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IActivityTaskFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityTaskFailedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityTaskFailedEventAttributes
                     * @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): temporal.api.history.v1.ActivityTaskFailedEventAttributes;

                    /**
                     * Decodes an ActivityTaskFailedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityTaskFailedEventAttributes
                     * @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)): temporal.api.history.v1.ActivityTaskFailedEventAttributes;

                    /**
                     * Creates an ActivityTaskFailedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityTaskFailedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ActivityTaskFailedEventAttributes;

                    /**
                     * Creates a plain object from an ActivityTaskFailedEventAttributes message. Also converts values to other types if specified.
                     * @param message ActivityTaskFailedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ActivityTaskFailedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityTaskFailedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityTaskFailedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityTaskTimedOutEventAttributes. */
                interface IActivityTaskTimedOutEventAttributes {

                    /**
                     * If this activity had failed, was retried, and then timed out, that failure is stored as the
                     * `cause` in here.
                     */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this timeout corresponds to */
                    scheduledEventId?: (Long|null);

                    /** The id of the `ACTIVITY_TASK_STARTED` event this timeout corresponds to */
                    startedEventId?: (Long|null);

                    /** ActivityTaskTimedOutEventAttributes retryState */
                    retryState?: (temporal.api.enums.v1.RetryState|null);
                }

                /** Represents an ActivityTaskTimedOutEventAttributes. */
                class ActivityTaskTimedOutEventAttributes implements IActivityTaskTimedOutEventAttributes {

                    /**
                     * Constructs a new ActivityTaskTimedOutEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IActivityTaskTimedOutEventAttributes);

                    /**
                     * If this activity had failed, was retried, and then timed out, that failure is stored as the
                     * `cause` in here.
                     */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this timeout corresponds to */
                    public scheduledEventId: Long;

                    /** The id of the `ACTIVITY_TASK_STARTED` event this timeout corresponds to */
                    public startedEventId: Long;

                    /** ActivityTaskTimedOutEventAttributes retryState. */
                    public retryState: temporal.api.enums.v1.RetryState;

                    /**
                     * Creates a new ActivityTaskTimedOutEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityTaskTimedOutEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IActivityTaskTimedOutEventAttributes): temporal.api.history.v1.ActivityTaskTimedOutEventAttributes;

                    /**
                     * Encodes the specified ActivityTaskTimedOutEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ActivityTaskTimedOutEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskTimedOutEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IActivityTaskTimedOutEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityTaskTimedOutEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ActivityTaskTimedOutEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskTimedOutEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IActivityTaskTimedOutEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityTaskTimedOutEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityTaskTimedOutEventAttributes
                     * @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): temporal.api.history.v1.ActivityTaskTimedOutEventAttributes;

                    /**
                     * Decodes an ActivityTaskTimedOutEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityTaskTimedOutEventAttributes
                     * @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)): temporal.api.history.v1.ActivityTaskTimedOutEventAttributes;

                    /**
                     * Creates an ActivityTaskTimedOutEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityTaskTimedOutEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ActivityTaskTimedOutEventAttributes;

                    /**
                     * Creates a plain object from an ActivityTaskTimedOutEventAttributes message. Also converts values to other types if specified.
                     * @param message ActivityTaskTimedOutEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ActivityTaskTimedOutEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityTaskTimedOutEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityTaskTimedOutEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityTaskCancelRequestedEventAttributes. */
                interface IActivityTaskCancelRequestedEventAttributes {

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this cancel request corresponds to */
                    scheduledEventId?: (Long|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);
                }

                /** Represents an ActivityTaskCancelRequestedEventAttributes. */
                class ActivityTaskCancelRequestedEventAttributes implements IActivityTaskCancelRequestedEventAttributes {

                    /**
                     * Constructs a new ActivityTaskCancelRequestedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IActivityTaskCancelRequestedEventAttributes);

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this cancel request corresponds to */
                    public scheduledEventId: Long;

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * Creates a new ActivityTaskCancelRequestedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityTaskCancelRequestedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IActivityTaskCancelRequestedEventAttributes): temporal.api.history.v1.ActivityTaskCancelRequestedEventAttributes;

                    /**
                     * Encodes the specified ActivityTaskCancelRequestedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ActivityTaskCancelRequestedEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskCancelRequestedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IActivityTaskCancelRequestedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityTaskCancelRequestedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ActivityTaskCancelRequestedEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskCancelRequestedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IActivityTaskCancelRequestedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityTaskCancelRequestedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityTaskCancelRequestedEventAttributes
                     * @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): temporal.api.history.v1.ActivityTaskCancelRequestedEventAttributes;

                    /**
                     * Decodes an ActivityTaskCancelRequestedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityTaskCancelRequestedEventAttributes
                     * @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)): temporal.api.history.v1.ActivityTaskCancelRequestedEventAttributes;

                    /**
                     * Creates an ActivityTaskCancelRequestedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityTaskCancelRequestedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ActivityTaskCancelRequestedEventAttributes;

                    /**
                     * Creates a plain object from an ActivityTaskCancelRequestedEventAttributes message. Also converts values to other types if specified.
                     * @param message ActivityTaskCancelRequestedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ActivityTaskCancelRequestedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityTaskCancelRequestedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityTaskCancelRequestedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityTaskCanceledEventAttributes. */
                interface IActivityTaskCanceledEventAttributes {

                    /** Additional information that the activity reported upon confirming cancellation */
                    details?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * id of the most recent `ACTIVITY_TASK_CANCEL_REQUESTED` event which refers to the same
                     * activity
                     */
                    latestCancelRequestedEventId?: (Long|null);

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this cancel confirmation corresponds to */
                    scheduledEventId?: (Long|null);

                    /** The id of the `ACTIVITY_TASK_STARTED` event this cancel confirmation corresponds to */
                    startedEventId?: (Long|null);

                    /** id of the worker who canceled this activity */
                    identity?: (string|null);

                    /**
                     * Version info of the worker who processed this workflow task.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);
                }

                /** Represents an ActivityTaskCanceledEventAttributes. */
                class ActivityTaskCanceledEventAttributes implements IActivityTaskCanceledEventAttributes {

                    /**
                     * Constructs a new ActivityTaskCanceledEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IActivityTaskCanceledEventAttributes);

                    /** Additional information that the activity reported upon confirming cancellation */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * id of the most recent `ACTIVITY_TASK_CANCEL_REQUESTED` event which refers to the same
                     * activity
                     */
                    public latestCancelRequestedEventId: Long;

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this cancel confirmation corresponds to */
                    public scheduledEventId: Long;

                    /** The id of the `ACTIVITY_TASK_STARTED` event this cancel confirmation corresponds to */
                    public startedEventId: Long;

                    /** id of the worker who canceled this activity */
                    public identity: string;

                    /**
                     * Version info of the worker who processed this workflow task.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public workerVersion?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Creates a new ActivityTaskCanceledEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityTaskCanceledEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IActivityTaskCanceledEventAttributes): temporal.api.history.v1.ActivityTaskCanceledEventAttributes;

                    /**
                     * Encodes the specified ActivityTaskCanceledEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ActivityTaskCanceledEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskCanceledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IActivityTaskCanceledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityTaskCanceledEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ActivityTaskCanceledEventAttributes.verify|verify} messages.
                     * @param message ActivityTaskCanceledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IActivityTaskCanceledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityTaskCanceledEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityTaskCanceledEventAttributes
                     * @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): temporal.api.history.v1.ActivityTaskCanceledEventAttributes;

                    /**
                     * Decodes an ActivityTaskCanceledEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityTaskCanceledEventAttributes
                     * @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)): temporal.api.history.v1.ActivityTaskCanceledEventAttributes;

                    /**
                     * Creates an ActivityTaskCanceledEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityTaskCanceledEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ActivityTaskCanceledEventAttributes;

                    /**
                     * Creates a plain object from an ActivityTaskCanceledEventAttributes message. Also converts values to other types if specified.
                     * @param message ActivityTaskCanceledEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ActivityTaskCanceledEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityTaskCanceledEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityTaskCanceledEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TimerStartedEventAttributes. */
                interface ITimerStartedEventAttributes {

                    /** The worker/user assigned id for this timer */
                    timerId?: (string|null);

                    /**
                     * How long until this timer fires
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    startToFireTimeout?: (google.protobuf.IDuration|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);
                }

                /** Represents a TimerStartedEventAttributes. */
                class TimerStartedEventAttributes implements ITimerStartedEventAttributes {

                    /**
                     * Constructs a new TimerStartedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.ITimerStartedEventAttributes);

                    /** The worker/user assigned id for this timer */
                    public timerId: string;

                    /**
                     * How long until this timer fires
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public startToFireTimeout?: (google.protobuf.IDuration|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * Creates a new TimerStartedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TimerStartedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.ITimerStartedEventAttributes): temporal.api.history.v1.TimerStartedEventAttributes;

                    /**
                     * Encodes the specified TimerStartedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.TimerStartedEventAttributes.verify|verify} messages.
                     * @param message TimerStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.ITimerStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TimerStartedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.TimerStartedEventAttributes.verify|verify} messages.
                     * @param message TimerStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.ITimerStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TimerStartedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TimerStartedEventAttributes
                     * @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): temporal.api.history.v1.TimerStartedEventAttributes;

                    /**
                     * Decodes a TimerStartedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TimerStartedEventAttributes
                     * @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)): temporal.api.history.v1.TimerStartedEventAttributes;

                    /**
                     * Creates a TimerStartedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TimerStartedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.TimerStartedEventAttributes;

                    /**
                     * Creates a plain object from a TimerStartedEventAttributes message. Also converts values to other types if specified.
                     * @param message TimerStartedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.TimerStartedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TimerStartedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TimerStartedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TimerFiredEventAttributes. */
                interface ITimerFiredEventAttributes {

                    /** Will match the `timer_id` from `TIMER_STARTED` event for this timer */
                    timerId?: (string|null);

                    /** The id of the `TIMER_STARTED` event itself */
                    startedEventId?: (Long|null);
                }

                /** Represents a TimerFiredEventAttributes. */
                class TimerFiredEventAttributes implements ITimerFiredEventAttributes {

                    /**
                     * Constructs a new TimerFiredEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.ITimerFiredEventAttributes);

                    /** Will match the `timer_id` from `TIMER_STARTED` event for this timer */
                    public timerId: string;

                    /** The id of the `TIMER_STARTED` event itself */
                    public startedEventId: Long;

                    /**
                     * Creates a new TimerFiredEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TimerFiredEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.ITimerFiredEventAttributes): temporal.api.history.v1.TimerFiredEventAttributes;

                    /**
                     * Encodes the specified TimerFiredEventAttributes message. Does not implicitly {@link temporal.api.history.v1.TimerFiredEventAttributes.verify|verify} messages.
                     * @param message TimerFiredEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.ITimerFiredEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TimerFiredEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.TimerFiredEventAttributes.verify|verify} messages.
                     * @param message TimerFiredEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.ITimerFiredEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TimerFiredEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TimerFiredEventAttributes
                     * @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): temporal.api.history.v1.TimerFiredEventAttributes;

                    /**
                     * Decodes a TimerFiredEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TimerFiredEventAttributes
                     * @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)): temporal.api.history.v1.TimerFiredEventAttributes;

                    /**
                     * Creates a TimerFiredEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TimerFiredEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.TimerFiredEventAttributes;

                    /**
                     * Creates a plain object from a TimerFiredEventAttributes message. Also converts values to other types if specified.
                     * @param message TimerFiredEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.TimerFiredEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TimerFiredEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TimerFiredEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TimerCanceledEventAttributes. */
                interface ITimerCanceledEventAttributes {

                    /** Will match the `timer_id` from `TIMER_STARTED` event for this timer */
                    timerId?: (string|null);

                    /** The id of the `TIMER_STARTED` event itself */
                    startedEventId?: (Long|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /** The id of the worker who requested this cancel */
                    identity?: (string|null);
                }

                /** Represents a TimerCanceledEventAttributes. */
                class TimerCanceledEventAttributes implements ITimerCanceledEventAttributes {

                    /**
                     * Constructs a new TimerCanceledEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.ITimerCanceledEventAttributes);

                    /** Will match the `timer_id` from `TIMER_STARTED` event for this timer */
                    public timerId: string;

                    /** The id of the `TIMER_STARTED` event itself */
                    public startedEventId: Long;

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /** The id of the worker who requested this cancel */
                    public identity: string;

                    /**
                     * Creates a new TimerCanceledEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TimerCanceledEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.ITimerCanceledEventAttributes): temporal.api.history.v1.TimerCanceledEventAttributes;

                    /**
                     * Encodes the specified TimerCanceledEventAttributes message. Does not implicitly {@link temporal.api.history.v1.TimerCanceledEventAttributes.verify|verify} messages.
                     * @param message TimerCanceledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.ITimerCanceledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TimerCanceledEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.TimerCanceledEventAttributes.verify|verify} messages.
                     * @param message TimerCanceledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.ITimerCanceledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TimerCanceledEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TimerCanceledEventAttributes
                     * @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): temporal.api.history.v1.TimerCanceledEventAttributes;

                    /**
                     * Decodes a TimerCanceledEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TimerCanceledEventAttributes
                     * @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)): temporal.api.history.v1.TimerCanceledEventAttributes;

                    /**
                     * Creates a TimerCanceledEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TimerCanceledEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.TimerCanceledEventAttributes;

                    /**
                     * Creates a plain object from a TimerCanceledEventAttributes message. Also converts values to other types if specified.
                     * @param message TimerCanceledEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.TimerCanceledEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TimerCanceledEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TimerCanceledEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionCancelRequestedEventAttributes. */
                interface IWorkflowExecutionCancelRequestedEventAttributes {

                    /** User provided reason for requesting cancellation */
                    cause?: (string|null);

                    /**
                     * The ID of the `REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event in the external
                     * workflow history when the cancellation was requested by another workflow.
                     */
                    externalInitiatedEventId?: (Long|null);

                    /** WorkflowExecutionCancelRequestedEventAttributes externalWorkflowExecution */
                    externalWorkflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** id of the worker or client who requested this cancel */
                    identity?: (string|null);
                }

                /** Represents a WorkflowExecutionCancelRequestedEventAttributes. */
                class WorkflowExecutionCancelRequestedEventAttributes implements IWorkflowExecutionCancelRequestedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionCancelRequestedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionCancelRequestedEventAttributes);

                    /** User provided reason for requesting cancellation */
                    public cause: string;

                    /**
                     * The ID of the `REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event in the external
                     * workflow history when the cancellation was requested by another workflow.
                     */
                    public externalInitiatedEventId: Long;

                    /** WorkflowExecutionCancelRequestedEventAttributes externalWorkflowExecution. */
                    public externalWorkflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** id of the worker or client who requested this cancel */
                    public identity: string;

                    /**
                     * Creates a new WorkflowExecutionCancelRequestedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionCancelRequestedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionCancelRequestedEventAttributes): temporal.api.history.v1.WorkflowExecutionCancelRequestedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionCancelRequestedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionCancelRequestedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionCancelRequestedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionCancelRequestedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionCancelRequestedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionCancelRequestedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionCancelRequestedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionCancelRequestedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionCancelRequestedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionCancelRequestedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionCancelRequestedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionCancelRequestedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionCancelRequestedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionCancelRequestedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionCancelRequestedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionCancelRequestedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionCancelRequestedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionCancelRequestedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionCancelRequestedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionCancelRequestedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionCancelRequestedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionCancelRequestedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionCanceledEventAttributes. */
                interface IWorkflowExecutionCanceledEventAttributes {

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /** WorkflowExecutionCanceledEventAttributes details */
                    details?: (temporal.api.common.v1.IPayloads|null);
                }

                /** Represents a WorkflowExecutionCanceledEventAttributes. */
                class WorkflowExecutionCanceledEventAttributes implements IWorkflowExecutionCanceledEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionCanceledEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionCanceledEventAttributes);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /** WorkflowExecutionCanceledEventAttributes details. */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Creates a new WorkflowExecutionCanceledEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionCanceledEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionCanceledEventAttributes): temporal.api.history.v1.WorkflowExecutionCanceledEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionCanceledEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionCanceledEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionCanceledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionCanceledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionCanceledEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionCanceledEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionCanceledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionCanceledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionCanceledEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionCanceledEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionCanceledEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionCanceledEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionCanceledEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionCanceledEventAttributes;

                    /**
                     * Creates a WorkflowExecutionCanceledEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionCanceledEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionCanceledEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionCanceledEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionCanceledEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionCanceledEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionCanceledEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionCanceledEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MarkerRecordedEventAttributes. */
                interface IMarkerRecordedEventAttributes {

                    /** Workers use this to identify the "types" of various markers. Ex: Local activity, side effect. */
                    markerName?: (string|null);

                    /** Serialized information recorded in the marker */
                    details?: ({ [k: string]: temporal.api.common.v1.IPayloads }|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /** MarkerRecordedEventAttributes header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** Some uses of markers, like a local activity, could "fail". If they did that is recorded here. */
                    failure?: (temporal.api.failure.v1.IFailure|null);
                }

                /** Represents a MarkerRecordedEventAttributes. */
                class MarkerRecordedEventAttributes implements IMarkerRecordedEventAttributes {

                    /**
                     * Constructs a new MarkerRecordedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IMarkerRecordedEventAttributes);

                    /** Workers use this to identify the "types" of various markers. Ex: Local activity, side effect. */
                    public markerName: string;

                    /** Serialized information recorded in the marker */
                    public details: { [k: string]: temporal.api.common.v1.IPayloads };

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /** MarkerRecordedEventAttributes header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** Some uses of markers, like a local activity, could "fail". If they did that is recorded here. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Creates a new MarkerRecordedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MarkerRecordedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IMarkerRecordedEventAttributes): temporal.api.history.v1.MarkerRecordedEventAttributes;

                    /**
                     * Encodes the specified MarkerRecordedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.MarkerRecordedEventAttributes.verify|verify} messages.
                     * @param message MarkerRecordedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IMarkerRecordedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MarkerRecordedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.MarkerRecordedEventAttributes.verify|verify} messages.
                     * @param message MarkerRecordedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IMarkerRecordedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MarkerRecordedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MarkerRecordedEventAttributes
                     * @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): temporal.api.history.v1.MarkerRecordedEventAttributes;

                    /**
                     * Decodes a MarkerRecordedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MarkerRecordedEventAttributes
                     * @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)): temporal.api.history.v1.MarkerRecordedEventAttributes;

                    /**
                     * Creates a MarkerRecordedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MarkerRecordedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.MarkerRecordedEventAttributes;

                    /**
                     * Creates a plain object from a MarkerRecordedEventAttributes message. Also converts values to other types if specified.
                     * @param message MarkerRecordedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.MarkerRecordedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MarkerRecordedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MarkerRecordedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionSignaledEventAttributes. */
                interface IWorkflowExecutionSignaledEventAttributes {

                    /** The name/type of the signal to fire */
                    signalName?: (string|null);

                    /** Will be deserialized and provided as argument(s) to the signal handler */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** id of the worker/client who sent this signal */
                    identity?: (string|null);

                    /**
                     * Headers that were passed by the sender of the signal and copied by temporal
                     * server into the workflow task.
                     */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** Deprecated. This field is never respected and should always be set to false. */
                    skipGenerateWorkflowTask?: (boolean|null);

                    /** When signal origin is a workflow execution, this field is set. */
                    externalWorkflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);
                }

                /** Represents a WorkflowExecutionSignaledEventAttributes. */
                class WorkflowExecutionSignaledEventAttributes implements IWorkflowExecutionSignaledEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionSignaledEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionSignaledEventAttributes);

                    /** The name/type of the signal to fire */
                    public signalName: string;

                    /** Will be deserialized and provided as argument(s) to the signal handler */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** id of the worker/client who sent this signal */
                    public identity: string;

                    /**
                     * Headers that were passed by the sender of the signal and copied by temporal
                     * server into the workflow task.
                     */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** Deprecated. This field is never respected and should always be set to false. */
                    public skipGenerateWorkflowTask: boolean;

                    /** When signal origin is a workflow execution, this field is set. */
                    public externalWorkflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * Creates a new WorkflowExecutionSignaledEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionSignaledEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionSignaledEventAttributes): temporal.api.history.v1.WorkflowExecutionSignaledEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionSignaledEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionSignaledEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionSignaledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionSignaledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionSignaledEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionSignaledEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionSignaledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionSignaledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionSignaledEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionSignaledEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionSignaledEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionSignaledEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionSignaledEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionSignaledEventAttributes;

                    /**
                     * Creates a WorkflowExecutionSignaledEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionSignaledEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionSignaledEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionSignaledEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionSignaledEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionSignaledEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionSignaledEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionSignaledEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionTerminatedEventAttributes. */
                interface IWorkflowExecutionTerminatedEventAttributes {

                    /** User/client provided reason for termination */
                    reason?: (string|null);

                    /** WorkflowExecutionTerminatedEventAttributes details */
                    details?: (temporal.api.common.v1.IPayloads|null);

                    /** id of the client who requested termination */
                    identity?: (string|null);
                }

                /** Represents a WorkflowExecutionTerminatedEventAttributes. */
                class WorkflowExecutionTerminatedEventAttributes implements IWorkflowExecutionTerminatedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionTerminatedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionTerminatedEventAttributes);

                    /** User/client provided reason for termination */
                    public reason: string;

                    /** WorkflowExecutionTerminatedEventAttributes details. */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /** id of the client who requested termination */
                    public identity: string;

                    /**
                     * Creates a new WorkflowExecutionTerminatedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionTerminatedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionTerminatedEventAttributes): temporal.api.history.v1.WorkflowExecutionTerminatedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionTerminatedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionTerminatedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionTerminatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionTerminatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionTerminatedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionTerminatedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionTerminatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionTerminatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionTerminatedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionTerminatedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionTerminatedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionTerminatedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionTerminatedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionTerminatedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionTerminatedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionTerminatedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionTerminatedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionTerminatedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionTerminatedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionTerminatedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionTerminatedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionTerminatedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RequestCancelExternalWorkflowExecutionInitiatedEventAttributes. */
                interface IRequestCancelExternalWorkflowExecutionInitiatedEventAttributes {

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /**
                     * The namespace the workflow to be cancelled lives in.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** RequestCancelExternalWorkflowExecutionInitiatedEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** RequestCancelExternalWorkflowExecutionInitiatedEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** Deprecated. */
                    control?: (string|null);

                    /**
                     * Workers are expected to set this to true if the workflow they are requesting to cancel is
                     * a child of the workflow which issued the request
                     */
                    childWorkflowOnly?: (boolean|null);

                    /** Reason for requesting the cancellation */
                    reason?: (string|null);
                }

                /** Represents a RequestCancelExternalWorkflowExecutionInitiatedEventAttributes. */
                class RequestCancelExternalWorkflowExecutionInitiatedEventAttributes implements IRequestCancelExternalWorkflowExecutionInitiatedEventAttributes {

                    /**
                     * Constructs a new RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionInitiatedEventAttributes);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * The namespace the workflow to be cancelled lives in.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** RequestCancelExternalWorkflowExecutionInitiatedEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** RequestCancelExternalWorkflowExecutionInitiatedEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** Deprecated. */
                    public control: string;

                    /**
                     * Workers are expected to set this to true if the workflow they are requesting to cancel is
                     * a child of the workflow which issued the request
                     */
                    public childWorkflowOnly: boolean;

                    /** Reason for requesting the cancellation */
                    public reason: string;

                    /**
                     * Creates a new RequestCancelExternalWorkflowExecutionInitiatedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RequestCancelExternalWorkflowExecutionInitiatedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionInitiatedEventAttributes): temporal.api.history.v1.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Encodes the specified RequestCancelExternalWorkflowExecutionInitiatedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.verify|verify} messages.
                     * @param message RequestCancelExternalWorkflowExecutionInitiatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionInitiatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RequestCancelExternalWorkflowExecutionInitiatedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.verify|verify} messages.
                     * @param message RequestCancelExternalWorkflowExecutionInitiatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionInitiatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RequestCancelExternalWorkflowExecutionInitiatedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RequestCancelExternalWorkflowExecutionInitiatedEventAttributes
                     * @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): temporal.api.history.v1.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Decodes a RequestCancelExternalWorkflowExecutionInitiatedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RequestCancelExternalWorkflowExecutionInitiatedEventAttributes
                     * @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)): temporal.api.history.v1.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Creates a RequestCancelExternalWorkflowExecutionInitiatedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RequestCancelExternalWorkflowExecutionInitiatedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Creates a plain object from a RequestCancelExternalWorkflowExecutionInitiatedEventAttributes message. Also converts values to other types if specified.
                     * @param message RequestCancelExternalWorkflowExecutionInitiatedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RequestCancelExternalWorkflowExecutionInitiatedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RequestCancelExternalWorkflowExecutionInitiatedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RequestCancelExternalWorkflowExecutionFailedEventAttributes. */
                interface IRequestCancelExternalWorkflowExecutionFailedEventAttributes {

                    /** RequestCancelExternalWorkflowExecutionFailedEventAttributes cause */
                    cause?: (temporal.api.enums.v1.CancelExternalWorkflowExecutionFailedCause|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /**
                     * Namespace of the workflow which failed to cancel.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** RequestCancelExternalWorkflowExecutionFailedEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** RequestCancelExternalWorkflowExecutionFailedEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * id of the `REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this failure
                     * corresponds to
                     */
                    initiatedEventId?: (Long|null);

                    /** Deprecated. */
                    control?: (string|null);
                }

                /** Represents a RequestCancelExternalWorkflowExecutionFailedEventAttributes. */
                class RequestCancelExternalWorkflowExecutionFailedEventAttributes implements IRequestCancelExternalWorkflowExecutionFailedEventAttributes {

                    /**
                     * Constructs a new RequestCancelExternalWorkflowExecutionFailedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionFailedEventAttributes);

                    /** RequestCancelExternalWorkflowExecutionFailedEventAttributes cause. */
                    public cause: temporal.api.enums.v1.CancelExternalWorkflowExecutionFailedCause;

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * Namespace of the workflow which failed to cancel.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** RequestCancelExternalWorkflowExecutionFailedEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** RequestCancelExternalWorkflowExecutionFailedEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * id of the `REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this failure
                     * corresponds to
                     */
                    public initiatedEventId: Long;

                    /** Deprecated. */
                    public control: string;

                    /**
                     * Creates a new RequestCancelExternalWorkflowExecutionFailedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RequestCancelExternalWorkflowExecutionFailedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionFailedEventAttributes): temporal.api.history.v1.RequestCancelExternalWorkflowExecutionFailedEventAttributes;

                    /**
                     * Encodes the specified RequestCancelExternalWorkflowExecutionFailedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.RequestCancelExternalWorkflowExecutionFailedEventAttributes.verify|verify} messages.
                     * @param message RequestCancelExternalWorkflowExecutionFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RequestCancelExternalWorkflowExecutionFailedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.RequestCancelExternalWorkflowExecutionFailedEventAttributes.verify|verify} messages.
                     * @param message RequestCancelExternalWorkflowExecutionFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RequestCancelExternalWorkflowExecutionFailedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RequestCancelExternalWorkflowExecutionFailedEventAttributes
                     * @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): temporal.api.history.v1.RequestCancelExternalWorkflowExecutionFailedEventAttributes;

                    /**
                     * Decodes a RequestCancelExternalWorkflowExecutionFailedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RequestCancelExternalWorkflowExecutionFailedEventAttributes
                     * @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)): temporal.api.history.v1.RequestCancelExternalWorkflowExecutionFailedEventAttributes;

                    /**
                     * Creates a RequestCancelExternalWorkflowExecutionFailedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RequestCancelExternalWorkflowExecutionFailedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.RequestCancelExternalWorkflowExecutionFailedEventAttributes;

                    /**
                     * Creates a plain object from a RequestCancelExternalWorkflowExecutionFailedEventAttributes message. Also converts values to other types if specified.
                     * @param message RequestCancelExternalWorkflowExecutionFailedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.RequestCancelExternalWorkflowExecutionFailedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RequestCancelExternalWorkflowExecutionFailedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RequestCancelExternalWorkflowExecutionFailedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExternalWorkflowExecutionCancelRequestedEventAttributes. */
                interface IExternalWorkflowExecutionCancelRequestedEventAttributes {

                    /**
                     * id of the `REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this event corresponds
                     * to
                     */
                    initiatedEventId?: (Long|null);

                    /**
                     * Namespace of the to-be-cancelled workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** ExternalWorkflowExecutionCancelRequestedEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** ExternalWorkflowExecutionCancelRequestedEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);
                }

                /** Represents an ExternalWorkflowExecutionCancelRequestedEventAttributes. */
                class ExternalWorkflowExecutionCancelRequestedEventAttributes implements IExternalWorkflowExecutionCancelRequestedEventAttributes {

                    /**
                     * Constructs a new ExternalWorkflowExecutionCancelRequestedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IExternalWorkflowExecutionCancelRequestedEventAttributes);

                    /**
                     * id of the `REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this event corresponds
                     * to
                     */
                    public initiatedEventId: Long;

                    /**
                     * Namespace of the to-be-cancelled workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** ExternalWorkflowExecutionCancelRequestedEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** ExternalWorkflowExecutionCancelRequestedEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * Creates a new ExternalWorkflowExecutionCancelRequestedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExternalWorkflowExecutionCancelRequestedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IExternalWorkflowExecutionCancelRequestedEventAttributes): temporal.api.history.v1.ExternalWorkflowExecutionCancelRequestedEventAttributes;

                    /**
                     * Encodes the specified ExternalWorkflowExecutionCancelRequestedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ExternalWorkflowExecutionCancelRequestedEventAttributes.verify|verify} messages.
                     * @param message ExternalWorkflowExecutionCancelRequestedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IExternalWorkflowExecutionCancelRequestedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExternalWorkflowExecutionCancelRequestedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ExternalWorkflowExecutionCancelRequestedEventAttributes.verify|verify} messages.
                     * @param message ExternalWorkflowExecutionCancelRequestedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IExternalWorkflowExecutionCancelRequestedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExternalWorkflowExecutionCancelRequestedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExternalWorkflowExecutionCancelRequestedEventAttributes
                     * @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): temporal.api.history.v1.ExternalWorkflowExecutionCancelRequestedEventAttributes;

                    /**
                     * Decodes an ExternalWorkflowExecutionCancelRequestedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExternalWorkflowExecutionCancelRequestedEventAttributes
                     * @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)): temporal.api.history.v1.ExternalWorkflowExecutionCancelRequestedEventAttributes;

                    /**
                     * Creates an ExternalWorkflowExecutionCancelRequestedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExternalWorkflowExecutionCancelRequestedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ExternalWorkflowExecutionCancelRequestedEventAttributes;

                    /**
                     * Creates a plain object from an ExternalWorkflowExecutionCancelRequestedEventAttributes message. Also converts values to other types if specified.
                     * @param message ExternalWorkflowExecutionCancelRequestedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ExternalWorkflowExecutionCancelRequestedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExternalWorkflowExecutionCancelRequestedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExternalWorkflowExecutionCancelRequestedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SignalExternalWorkflowExecutionInitiatedEventAttributes. */
                interface ISignalExternalWorkflowExecutionInitiatedEventAttributes {

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /**
                     * Namespace of the to-be-signalled workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** SignalExternalWorkflowExecutionInitiatedEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** SignalExternalWorkflowExecutionInitiatedEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** name/type of the signal to fire in the external workflow */
                    signalName?: (string|null);

                    /** Serialized arguments to provide to the signal handler */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** Deprecated. */
                    control?: (string|null);

                    /**
                     * Workers are expected to set this to true if the workflow they are requesting to cancel is
                     * a child of the workflow which issued the request
                     */
                    childWorkflowOnly?: (boolean|null);

                    /** SignalExternalWorkflowExecutionInitiatedEventAttributes header */
                    header?: (temporal.api.common.v1.IHeader|null);
                }

                /** Represents a SignalExternalWorkflowExecutionInitiatedEventAttributes. */
                class SignalExternalWorkflowExecutionInitiatedEventAttributes implements ISignalExternalWorkflowExecutionInitiatedEventAttributes {

                    /**
                     * Constructs a new SignalExternalWorkflowExecutionInitiatedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.ISignalExternalWorkflowExecutionInitiatedEventAttributes);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * Namespace of the to-be-signalled workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** SignalExternalWorkflowExecutionInitiatedEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** SignalExternalWorkflowExecutionInitiatedEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** name/type of the signal to fire in the external workflow */
                    public signalName: string;

                    /** Serialized arguments to provide to the signal handler */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** Deprecated. */
                    public control: string;

                    /**
                     * Workers are expected to set this to true if the workflow they are requesting to cancel is
                     * a child of the workflow which issued the request
                     */
                    public childWorkflowOnly: boolean;

                    /** SignalExternalWorkflowExecutionInitiatedEventAttributes header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Creates a new SignalExternalWorkflowExecutionInitiatedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SignalExternalWorkflowExecutionInitiatedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.ISignalExternalWorkflowExecutionInitiatedEventAttributes): temporal.api.history.v1.SignalExternalWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Encodes the specified SignalExternalWorkflowExecutionInitiatedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.SignalExternalWorkflowExecutionInitiatedEventAttributes.verify|verify} messages.
                     * @param message SignalExternalWorkflowExecutionInitiatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.ISignalExternalWorkflowExecutionInitiatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SignalExternalWorkflowExecutionInitiatedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.SignalExternalWorkflowExecutionInitiatedEventAttributes.verify|verify} messages.
                     * @param message SignalExternalWorkflowExecutionInitiatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.ISignalExternalWorkflowExecutionInitiatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SignalExternalWorkflowExecutionInitiatedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SignalExternalWorkflowExecutionInitiatedEventAttributes
                     * @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): temporal.api.history.v1.SignalExternalWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Decodes a SignalExternalWorkflowExecutionInitiatedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SignalExternalWorkflowExecutionInitiatedEventAttributes
                     * @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)): temporal.api.history.v1.SignalExternalWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Creates a SignalExternalWorkflowExecutionInitiatedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SignalExternalWorkflowExecutionInitiatedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.SignalExternalWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Creates a plain object from a SignalExternalWorkflowExecutionInitiatedEventAttributes message. Also converts values to other types if specified.
                     * @param message SignalExternalWorkflowExecutionInitiatedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.SignalExternalWorkflowExecutionInitiatedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SignalExternalWorkflowExecutionInitiatedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SignalExternalWorkflowExecutionInitiatedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SignalExternalWorkflowExecutionFailedEventAttributes. */
                interface ISignalExternalWorkflowExecutionFailedEventAttributes {

                    /** SignalExternalWorkflowExecutionFailedEventAttributes cause */
                    cause?: (temporal.api.enums.v1.SignalExternalWorkflowExecutionFailedCause|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /**
                     * Namespace of the workflow which failed the signal.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** SignalExternalWorkflowExecutionFailedEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** SignalExternalWorkflowExecutionFailedEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** SignalExternalWorkflowExecutionFailedEventAttributes initiatedEventId */
                    initiatedEventId?: (Long|null);

                    /** Deprecated. */
                    control?: (string|null);
                }

                /** Represents a SignalExternalWorkflowExecutionFailedEventAttributes. */
                class SignalExternalWorkflowExecutionFailedEventAttributes implements ISignalExternalWorkflowExecutionFailedEventAttributes {

                    /**
                     * Constructs a new SignalExternalWorkflowExecutionFailedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.ISignalExternalWorkflowExecutionFailedEventAttributes);

                    /** SignalExternalWorkflowExecutionFailedEventAttributes cause. */
                    public cause: temporal.api.enums.v1.SignalExternalWorkflowExecutionFailedCause;

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * Namespace of the workflow which failed the signal.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** SignalExternalWorkflowExecutionFailedEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** SignalExternalWorkflowExecutionFailedEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** SignalExternalWorkflowExecutionFailedEventAttributes initiatedEventId. */
                    public initiatedEventId: Long;

                    /** Deprecated. */
                    public control: string;

                    /**
                     * Creates a new SignalExternalWorkflowExecutionFailedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SignalExternalWorkflowExecutionFailedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.ISignalExternalWorkflowExecutionFailedEventAttributes): temporal.api.history.v1.SignalExternalWorkflowExecutionFailedEventAttributes;

                    /**
                     * Encodes the specified SignalExternalWorkflowExecutionFailedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.SignalExternalWorkflowExecutionFailedEventAttributes.verify|verify} messages.
                     * @param message SignalExternalWorkflowExecutionFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.ISignalExternalWorkflowExecutionFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SignalExternalWorkflowExecutionFailedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.SignalExternalWorkflowExecutionFailedEventAttributes.verify|verify} messages.
                     * @param message SignalExternalWorkflowExecutionFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.ISignalExternalWorkflowExecutionFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SignalExternalWorkflowExecutionFailedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SignalExternalWorkflowExecutionFailedEventAttributes
                     * @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): temporal.api.history.v1.SignalExternalWorkflowExecutionFailedEventAttributes;

                    /**
                     * Decodes a SignalExternalWorkflowExecutionFailedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SignalExternalWorkflowExecutionFailedEventAttributes
                     * @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)): temporal.api.history.v1.SignalExternalWorkflowExecutionFailedEventAttributes;

                    /**
                     * Creates a SignalExternalWorkflowExecutionFailedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SignalExternalWorkflowExecutionFailedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.SignalExternalWorkflowExecutionFailedEventAttributes;

                    /**
                     * Creates a plain object from a SignalExternalWorkflowExecutionFailedEventAttributes message. Also converts values to other types if specified.
                     * @param message SignalExternalWorkflowExecutionFailedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.SignalExternalWorkflowExecutionFailedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SignalExternalWorkflowExecutionFailedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SignalExternalWorkflowExecutionFailedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExternalWorkflowExecutionSignaledEventAttributes. */
                interface IExternalWorkflowExecutionSignaledEventAttributes {

                    /** id of the `SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this event corresponds to */
                    initiatedEventId?: (Long|null);

                    /**
                     * Namespace of the workflow which was signaled.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** ExternalWorkflowExecutionSignaledEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** ExternalWorkflowExecutionSignaledEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** Deprecated. */
                    control?: (string|null);
                }

                /** Represents an ExternalWorkflowExecutionSignaledEventAttributes. */
                class ExternalWorkflowExecutionSignaledEventAttributes implements IExternalWorkflowExecutionSignaledEventAttributes {

                    /**
                     * Constructs a new ExternalWorkflowExecutionSignaledEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IExternalWorkflowExecutionSignaledEventAttributes);

                    /** id of the `SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this event corresponds to */
                    public initiatedEventId: Long;

                    /**
                     * Namespace of the workflow which was signaled.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** ExternalWorkflowExecutionSignaledEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** ExternalWorkflowExecutionSignaledEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** Deprecated. */
                    public control: string;

                    /**
                     * Creates a new ExternalWorkflowExecutionSignaledEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExternalWorkflowExecutionSignaledEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IExternalWorkflowExecutionSignaledEventAttributes): temporal.api.history.v1.ExternalWorkflowExecutionSignaledEventAttributes;

                    /**
                     * Encodes the specified ExternalWorkflowExecutionSignaledEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ExternalWorkflowExecutionSignaledEventAttributes.verify|verify} messages.
                     * @param message ExternalWorkflowExecutionSignaledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IExternalWorkflowExecutionSignaledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExternalWorkflowExecutionSignaledEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ExternalWorkflowExecutionSignaledEventAttributes.verify|verify} messages.
                     * @param message ExternalWorkflowExecutionSignaledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IExternalWorkflowExecutionSignaledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExternalWorkflowExecutionSignaledEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExternalWorkflowExecutionSignaledEventAttributes
                     * @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): temporal.api.history.v1.ExternalWorkflowExecutionSignaledEventAttributes;

                    /**
                     * Decodes an ExternalWorkflowExecutionSignaledEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExternalWorkflowExecutionSignaledEventAttributes
                     * @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)): temporal.api.history.v1.ExternalWorkflowExecutionSignaledEventAttributes;

                    /**
                     * Creates an ExternalWorkflowExecutionSignaledEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExternalWorkflowExecutionSignaledEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ExternalWorkflowExecutionSignaledEventAttributes;

                    /**
                     * Creates a plain object from an ExternalWorkflowExecutionSignaledEventAttributes message. Also converts values to other types if specified.
                     * @param message ExternalWorkflowExecutionSignaledEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ExternalWorkflowExecutionSignaledEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExternalWorkflowExecutionSignaledEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExternalWorkflowExecutionSignaledEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpsertWorkflowSearchAttributesEventAttributes. */
                interface IUpsertWorkflowSearchAttributesEventAttributes {

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /** UpsertWorkflowSearchAttributesEventAttributes searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);
                }

                /** Represents an UpsertWorkflowSearchAttributesEventAttributes. */
                class UpsertWorkflowSearchAttributesEventAttributes implements IUpsertWorkflowSearchAttributesEventAttributes {

                    /**
                     * Constructs a new UpsertWorkflowSearchAttributesEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IUpsertWorkflowSearchAttributesEventAttributes);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /** UpsertWorkflowSearchAttributesEventAttributes searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * Creates a new UpsertWorkflowSearchAttributesEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpsertWorkflowSearchAttributesEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IUpsertWorkflowSearchAttributesEventAttributes): temporal.api.history.v1.UpsertWorkflowSearchAttributesEventAttributes;

                    /**
                     * Encodes the specified UpsertWorkflowSearchAttributesEventAttributes message. Does not implicitly {@link temporal.api.history.v1.UpsertWorkflowSearchAttributesEventAttributes.verify|verify} messages.
                     * @param message UpsertWorkflowSearchAttributesEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IUpsertWorkflowSearchAttributesEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpsertWorkflowSearchAttributesEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.UpsertWorkflowSearchAttributesEventAttributes.verify|verify} messages.
                     * @param message UpsertWorkflowSearchAttributesEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IUpsertWorkflowSearchAttributesEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpsertWorkflowSearchAttributesEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpsertWorkflowSearchAttributesEventAttributes
                     * @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): temporal.api.history.v1.UpsertWorkflowSearchAttributesEventAttributes;

                    /**
                     * Decodes an UpsertWorkflowSearchAttributesEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpsertWorkflowSearchAttributesEventAttributes
                     * @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)): temporal.api.history.v1.UpsertWorkflowSearchAttributesEventAttributes;

                    /**
                     * Creates an UpsertWorkflowSearchAttributesEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpsertWorkflowSearchAttributesEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.UpsertWorkflowSearchAttributesEventAttributes;

                    /**
                     * Creates a plain object from an UpsertWorkflowSearchAttributesEventAttributes message. Also converts values to other types if specified.
                     * @param message UpsertWorkflowSearchAttributesEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.UpsertWorkflowSearchAttributesEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpsertWorkflowSearchAttributesEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpsertWorkflowSearchAttributesEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowPropertiesModifiedEventAttributes. */
                interface IWorkflowPropertiesModifiedEventAttributes {

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /**
                     * If set, update the workflow memo with the provided values. The values will be merged with
                     * the existing memo. If the user wants to delete values, a default/empty Payload should be
                     * used as the value for the key being deleted.
                     */
                    upsertedMemo?: (temporal.api.common.v1.IMemo|null);
                }

                /** Represents a WorkflowPropertiesModifiedEventAttributes. */
                class WorkflowPropertiesModifiedEventAttributes implements IWorkflowPropertiesModifiedEventAttributes {

                    /**
                     * Constructs a new WorkflowPropertiesModifiedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowPropertiesModifiedEventAttributes);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * If set, update the workflow memo with the provided values. The values will be merged with
                     * the existing memo. If the user wants to delete values, a default/empty Payload should be
                     * used as the value for the key being deleted.
                     */
                    public upsertedMemo?: (temporal.api.common.v1.IMemo|null);

                    /**
                     * Creates a new WorkflowPropertiesModifiedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowPropertiesModifiedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowPropertiesModifiedEventAttributes): temporal.api.history.v1.WorkflowPropertiesModifiedEventAttributes;

                    /**
                     * Encodes the specified WorkflowPropertiesModifiedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowPropertiesModifiedEventAttributes.verify|verify} messages.
                     * @param message WorkflowPropertiesModifiedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowPropertiesModifiedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowPropertiesModifiedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowPropertiesModifiedEventAttributes.verify|verify} messages.
                     * @param message WorkflowPropertiesModifiedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowPropertiesModifiedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowPropertiesModifiedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowPropertiesModifiedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowPropertiesModifiedEventAttributes;

                    /**
                     * Decodes a WorkflowPropertiesModifiedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowPropertiesModifiedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowPropertiesModifiedEventAttributes;

                    /**
                     * Creates a WorkflowPropertiesModifiedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowPropertiesModifiedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowPropertiesModifiedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowPropertiesModifiedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowPropertiesModifiedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowPropertiesModifiedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowPropertiesModifiedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowPropertiesModifiedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartChildWorkflowExecutionInitiatedEventAttributes. */
                interface IStartChildWorkflowExecutionInitiatedEventAttributes {

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes workflowId */
                    workflowId?: (string|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes input */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new. */
                    workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run. */
                    workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** Default: PARENT_CLOSE_POLICY_TERMINATE. */
                    parentClosePolicy?: (temporal.api.enums.v1.ParentClosePolicy|null);

                    /** Deprecated. */
                    control?: (string|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);

                    /** Default: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE. */
                    workflowIdReusePolicy?: (temporal.api.enums.v1.WorkflowIdReusePolicy|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes retryPolicy */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** If this child runs on a cron schedule, it will appear here */
                    cronSchedule?: (string|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes memo */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * If this is set, the child workflow inherits the Build ID of the parent. Otherwise, the assignment
                     * rules of the child's Task Queue will be used to independently assign a Build ID to it.
                     * Deprecated. Only considered for versioning v0.2.
                     */
                    inheritBuildId?: (boolean|null);

                    /** Priority metadata */
                    priority?: (temporal.api.common.v1.IPriority|null);
                }

                /** Represents a StartChildWorkflowExecutionInitiatedEventAttributes. */
                class StartChildWorkflowExecutionInitiatedEventAttributes implements IStartChildWorkflowExecutionInitiatedEventAttributes {

                    /**
                     * Constructs a new StartChildWorkflowExecutionInitiatedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IStartChildWorkflowExecutionInitiatedEventAttributes);

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** StartChildWorkflowExecutionInitiatedEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** StartChildWorkflowExecutionInitiatedEventAttributes workflowId. */
                    public workflowId: string;

                    /** StartChildWorkflowExecutionInitiatedEventAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes input. */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new. */
                    public workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run. */
                    public workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    public workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** Default: PARENT_CLOSE_POLICY_TERMINATE. */
                    public parentClosePolicy: temporal.api.enums.v1.ParentClosePolicy;

                    /** Deprecated. */
                    public control: string;

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /** Default: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE. */
                    public workflowIdReusePolicy: temporal.api.enums.v1.WorkflowIdReusePolicy;

                    /** StartChildWorkflowExecutionInitiatedEventAttributes retryPolicy. */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** If this child runs on a cron schedule, it will appear here */
                    public cronSchedule: string;

                    /** StartChildWorkflowExecutionInitiatedEventAttributes header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes memo. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** StartChildWorkflowExecutionInitiatedEventAttributes searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * If this is set, the child workflow inherits the Build ID of the parent. Otherwise, the assignment
                     * rules of the child's Task Queue will be used to independently assign a Build ID to it.
                     * Deprecated. Only considered for versioning v0.2.
                     */
                    public inheritBuildId: boolean;

                    /** Priority metadata */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * Creates a new StartChildWorkflowExecutionInitiatedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartChildWorkflowExecutionInitiatedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IStartChildWorkflowExecutionInitiatedEventAttributes): temporal.api.history.v1.StartChildWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Encodes the specified StartChildWorkflowExecutionInitiatedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.StartChildWorkflowExecutionInitiatedEventAttributes.verify|verify} messages.
                     * @param message StartChildWorkflowExecutionInitiatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IStartChildWorkflowExecutionInitiatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartChildWorkflowExecutionInitiatedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.StartChildWorkflowExecutionInitiatedEventAttributes.verify|verify} messages.
                     * @param message StartChildWorkflowExecutionInitiatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IStartChildWorkflowExecutionInitiatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartChildWorkflowExecutionInitiatedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartChildWorkflowExecutionInitiatedEventAttributes
                     * @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): temporal.api.history.v1.StartChildWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Decodes a StartChildWorkflowExecutionInitiatedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartChildWorkflowExecutionInitiatedEventAttributes
                     * @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)): temporal.api.history.v1.StartChildWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Creates a StartChildWorkflowExecutionInitiatedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartChildWorkflowExecutionInitiatedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.StartChildWorkflowExecutionInitiatedEventAttributes;

                    /**
                     * Creates a plain object from a StartChildWorkflowExecutionInitiatedEventAttributes message. Also converts values to other types if specified.
                     * @param message StartChildWorkflowExecutionInitiatedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.StartChildWorkflowExecutionInitiatedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartChildWorkflowExecutionInitiatedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartChildWorkflowExecutionInitiatedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartChildWorkflowExecutionFailedEventAttributes. */
                interface IStartChildWorkflowExecutionFailedEventAttributes {

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** StartChildWorkflowExecutionFailedEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** StartChildWorkflowExecutionFailedEventAttributes workflowId */
                    workflowId?: (string|null);

                    /** StartChildWorkflowExecutionFailedEventAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** StartChildWorkflowExecutionFailedEventAttributes cause */
                    cause?: (temporal.api.enums.v1.StartChildWorkflowExecutionFailedCause|null);

                    /** Deprecated. */
                    control?: (string|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    initiatedEventId?: (Long|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    workflowTaskCompletedEventId?: (Long|null);
                }

                /** Represents a StartChildWorkflowExecutionFailedEventAttributes. */
                class StartChildWorkflowExecutionFailedEventAttributes implements IStartChildWorkflowExecutionFailedEventAttributes {

                    /**
                     * Constructs a new StartChildWorkflowExecutionFailedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IStartChildWorkflowExecutionFailedEventAttributes);

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** StartChildWorkflowExecutionFailedEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** StartChildWorkflowExecutionFailedEventAttributes workflowId. */
                    public workflowId: string;

                    /** StartChildWorkflowExecutionFailedEventAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** StartChildWorkflowExecutionFailedEventAttributes cause. */
                    public cause: temporal.api.enums.v1.StartChildWorkflowExecutionFailedCause;

                    /** Deprecated. */
                    public control: string;

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    public initiatedEventId: Long;

                    /** The `WORKFLOW_TASK_COMPLETED` event which this command was reported with */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * Creates a new StartChildWorkflowExecutionFailedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartChildWorkflowExecutionFailedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IStartChildWorkflowExecutionFailedEventAttributes): temporal.api.history.v1.StartChildWorkflowExecutionFailedEventAttributes;

                    /**
                     * Encodes the specified StartChildWorkflowExecutionFailedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.StartChildWorkflowExecutionFailedEventAttributes.verify|verify} messages.
                     * @param message StartChildWorkflowExecutionFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IStartChildWorkflowExecutionFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartChildWorkflowExecutionFailedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.StartChildWorkflowExecutionFailedEventAttributes.verify|verify} messages.
                     * @param message StartChildWorkflowExecutionFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IStartChildWorkflowExecutionFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartChildWorkflowExecutionFailedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartChildWorkflowExecutionFailedEventAttributes
                     * @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): temporal.api.history.v1.StartChildWorkflowExecutionFailedEventAttributes;

                    /**
                     * Decodes a StartChildWorkflowExecutionFailedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartChildWorkflowExecutionFailedEventAttributes
                     * @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)): temporal.api.history.v1.StartChildWorkflowExecutionFailedEventAttributes;

                    /**
                     * Creates a StartChildWorkflowExecutionFailedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartChildWorkflowExecutionFailedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.StartChildWorkflowExecutionFailedEventAttributes;

                    /**
                     * Creates a plain object from a StartChildWorkflowExecutionFailedEventAttributes message. Also converts values to other types if specified.
                     * @param message StartChildWorkflowExecutionFailedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.StartChildWorkflowExecutionFailedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartChildWorkflowExecutionFailedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartChildWorkflowExecutionFailedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ChildWorkflowExecutionStartedEventAttributes. */
                interface IChildWorkflowExecutionStartedEventAttributes {

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** ChildWorkflowExecutionStartedEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    initiatedEventId?: (Long|null);

                    /** ChildWorkflowExecutionStartedEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionStartedEventAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** ChildWorkflowExecutionStartedEventAttributes header */
                    header?: (temporal.api.common.v1.IHeader|null);
                }

                /** Represents a ChildWorkflowExecutionStartedEventAttributes. */
                class ChildWorkflowExecutionStartedEventAttributes implements IChildWorkflowExecutionStartedEventAttributes {

                    /**
                     * Constructs a new ChildWorkflowExecutionStartedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IChildWorkflowExecutionStartedEventAttributes);

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** ChildWorkflowExecutionStartedEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    public initiatedEventId: Long;

                    /** ChildWorkflowExecutionStartedEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionStartedEventAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** ChildWorkflowExecutionStartedEventAttributes header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Creates a new ChildWorkflowExecutionStartedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ChildWorkflowExecutionStartedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IChildWorkflowExecutionStartedEventAttributes): temporal.api.history.v1.ChildWorkflowExecutionStartedEventAttributes;

                    /**
                     * Encodes the specified ChildWorkflowExecutionStartedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionStartedEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IChildWorkflowExecutionStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ChildWorkflowExecutionStartedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionStartedEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IChildWorkflowExecutionStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ChildWorkflowExecutionStartedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ChildWorkflowExecutionStartedEventAttributes
                     * @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): temporal.api.history.v1.ChildWorkflowExecutionStartedEventAttributes;

                    /**
                     * Decodes a ChildWorkflowExecutionStartedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ChildWorkflowExecutionStartedEventAttributes
                     * @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)): temporal.api.history.v1.ChildWorkflowExecutionStartedEventAttributes;

                    /**
                     * Creates a ChildWorkflowExecutionStartedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ChildWorkflowExecutionStartedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ChildWorkflowExecutionStartedEventAttributes;

                    /**
                     * Creates a plain object from a ChildWorkflowExecutionStartedEventAttributes message. Also converts values to other types if specified.
                     * @param message ChildWorkflowExecutionStartedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ChildWorkflowExecutionStartedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ChildWorkflowExecutionStartedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ChildWorkflowExecutionStartedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ChildWorkflowExecutionCompletedEventAttributes. */
                interface IChildWorkflowExecutionCompletedEventAttributes {

                    /** ChildWorkflowExecutionCompletedEventAttributes result */
                    result?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** ChildWorkflowExecutionCompletedEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** ChildWorkflowExecutionCompletedEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionCompletedEventAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    initiatedEventId?: (Long|null);

                    /** Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to */
                    startedEventId?: (Long|null);
                }

                /** Represents a ChildWorkflowExecutionCompletedEventAttributes. */
                class ChildWorkflowExecutionCompletedEventAttributes implements IChildWorkflowExecutionCompletedEventAttributes {

                    /**
                     * Constructs a new ChildWorkflowExecutionCompletedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IChildWorkflowExecutionCompletedEventAttributes);

                    /** ChildWorkflowExecutionCompletedEventAttributes result. */
                    public result?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** ChildWorkflowExecutionCompletedEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** ChildWorkflowExecutionCompletedEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionCompletedEventAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    public initiatedEventId: Long;

                    /** Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to */
                    public startedEventId: Long;

                    /**
                     * Creates a new ChildWorkflowExecutionCompletedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ChildWorkflowExecutionCompletedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IChildWorkflowExecutionCompletedEventAttributes): temporal.api.history.v1.ChildWorkflowExecutionCompletedEventAttributes;

                    /**
                     * Encodes the specified ChildWorkflowExecutionCompletedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionCompletedEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IChildWorkflowExecutionCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ChildWorkflowExecutionCompletedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionCompletedEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IChildWorkflowExecutionCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ChildWorkflowExecutionCompletedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ChildWorkflowExecutionCompletedEventAttributes
                     * @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): temporal.api.history.v1.ChildWorkflowExecutionCompletedEventAttributes;

                    /**
                     * Decodes a ChildWorkflowExecutionCompletedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ChildWorkflowExecutionCompletedEventAttributes
                     * @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)): temporal.api.history.v1.ChildWorkflowExecutionCompletedEventAttributes;

                    /**
                     * Creates a ChildWorkflowExecutionCompletedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ChildWorkflowExecutionCompletedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ChildWorkflowExecutionCompletedEventAttributes;

                    /**
                     * Creates a plain object from a ChildWorkflowExecutionCompletedEventAttributes message. Also converts values to other types if specified.
                     * @param message ChildWorkflowExecutionCompletedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ChildWorkflowExecutionCompletedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ChildWorkflowExecutionCompletedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ChildWorkflowExecutionCompletedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ChildWorkflowExecutionFailedEventAttributes. */
                interface IChildWorkflowExecutionFailedEventAttributes {

                    /** ChildWorkflowExecutionFailedEventAttributes failure */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** ChildWorkflowExecutionFailedEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** ChildWorkflowExecutionFailedEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionFailedEventAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    initiatedEventId?: (Long|null);

                    /** Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to */
                    startedEventId?: (Long|null);

                    /** ChildWorkflowExecutionFailedEventAttributes retryState */
                    retryState?: (temporal.api.enums.v1.RetryState|null);
                }

                /** Represents a ChildWorkflowExecutionFailedEventAttributes. */
                class ChildWorkflowExecutionFailedEventAttributes implements IChildWorkflowExecutionFailedEventAttributes {

                    /**
                     * Constructs a new ChildWorkflowExecutionFailedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IChildWorkflowExecutionFailedEventAttributes);

                    /** ChildWorkflowExecutionFailedEventAttributes failure. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** ChildWorkflowExecutionFailedEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** ChildWorkflowExecutionFailedEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionFailedEventAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    public initiatedEventId: Long;

                    /** Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to */
                    public startedEventId: Long;

                    /** ChildWorkflowExecutionFailedEventAttributes retryState. */
                    public retryState: temporal.api.enums.v1.RetryState;

                    /**
                     * Creates a new ChildWorkflowExecutionFailedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ChildWorkflowExecutionFailedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IChildWorkflowExecutionFailedEventAttributes): temporal.api.history.v1.ChildWorkflowExecutionFailedEventAttributes;

                    /**
                     * Encodes the specified ChildWorkflowExecutionFailedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionFailedEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IChildWorkflowExecutionFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ChildWorkflowExecutionFailedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionFailedEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IChildWorkflowExecutionFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ChildWorkflowExecutionFailedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ChildWorkflowExecutionFailedEventAttributes
                     * @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): temporal.api.history.v1.ChildWorkflowExecutionFailedEventAttributes;

                    /**
                     * Decodes a ChildWorkflowExecutionFailedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ChildWorkflowExecutionFailedEventAttributes
                     * @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)): temporal.api.history.v1.ChildWorkflowExecutionFailedEventAttributes;

                    /**
                     * Creates a ChildWorkflowExecutionFailedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ChildWorkflowExecutionFailedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ChildWorkflowExecutionFailedEventAttributes;

                    /**
                     * Creates a plain object from a ChildWorkflowExecutionFailedEventAttributes message. Also converts values to other types if specified.
                     * @param message ChildWorkflowExecutionFailedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ChildWorkflowExecutionFailedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ChildWorkflowExecutionFailedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ChildWorkflowExecutionFailedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ChildWorkflowExecutionCanceledEventAttributes. */
                interface IChildWorkflowExecutionCanceledEventAttributes {

                    /** ChildWorkflowExecutionCanceledEventAttributes details */
                    details?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** ChildWorkflowExecutionCanceledEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** ChildWorkflowExecutionCanceledEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionCanceledEventAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    initiatedEventId?: (Long|null);

                    /** Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to */
                    startedEventId?: (Long|null);
                }

                /** Represents a ChildWorkflowExecutionCanceledEventAttributes. */
                class ChildWorkflowExecutionCanceledEventAttributes implements IChildWorkflowExecutionCanceledEventAttributes {

                    /**
                     * Constructs a new ChildWorkflowExecutionCanceledEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IChildWorkflowExecutionCanceledEventAttributes);

                    /** ChildWorkflowExecutionCanceledEventAttributes details. */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** ChildWorkflowExecutionCanceledEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** ChildWorkflowExecutionCanceledEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionCanceledEventAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    public initiatedEventId: Long;

                    /** Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to */
                    public startedEventId: Long;

                    /**
                     * Creates a new ChildWorkflowExecutionCanceledEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ChildWorkflowExecutionCanceledEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IChildWorkflowExecutionCanceledEventAttributes): temporal.api.history.v1.ChildWorkflowExecutionCanceledEventAttributes;

                    /**
                     * Encodes the specified ChildWorkflowExecutionCanceledEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionCanceledEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionCanceledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IChildWorkflowExecutionCanceledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ChildWorkflowExecutionCanceledEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionCanceledEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionCanceledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IChildWorkflowExecutionCanceledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ChildWorkflowExecutionCanceledEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ChildWorkflowExecutionCanceledEventAttributes
                     * @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): temporal.api.history.v1.ChildWorkflowExecutionCanceledEventAttributes;

                    /**
                     * Decodes a ChildWorkflowExecutionCanceledEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ChildWorkflowExecutionCanceledEventAttributes
                     * @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)): temporal.api.history.v1.ChildWorkflowExecutionCanceledEventAttributes;

                    /**
                     * Creates a ChildWorkflowExecutionCanceledEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ChildWorkflowExecutionCanceledEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ChildWorkflowExecutionCanceledEventAttributes;

                    /**
                     * Creates a plain object from a ChildWorkflowExecutionCanceledEventAttributes message. Also converts values to other types if specified.
                     * @param message ChildWorkflowExecutionCanceledEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ChildWorkflowExecutionCanceledEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ChildWorkflowExecutionCanceledEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ChildWorkflowExecutionCanceledEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ChildWorkflowExecutionTimedOutEventAttributes. */
                interface IChildWorkflowExecutionTimedOutEventAttributes {

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** ChildWorkflowExecutionTimedOutEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** ChildWorkflowExecutionTimedOutEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionTimedOutEventAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    initiatedEventId?: (Long|null);

                    /** Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to */
                    startedEventId?: (Long|null);

                    /** ChildWorkflowExecutionTimedOutEventAttributes retryState */
                    retryState?: (temporal.api.enums.v1.RetryState|null);
                }

                /** Represents a ChildWorkflowExecutionTimedOutEventAttributes. */
                class ChildWorkflowExecutionTimedOutEventAttributes implements IChildWorkflowExecutionTimedOutEventAttributes {

                    /**
                     * Constructs a new ChildWorkflowExecutionTimedOutEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IChildWorkflowExecutionTimedOutEventAttributes);

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** ChildWorkflowExecutionTimedOutEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** ChildWorkflowExecutionTimedOutEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionTimedOutEventAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    public initiatedEventId: Long;

                    /** Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to */
                    public startedEventId: Long;

                    /** ChildWorkflowExecutionTimedOutEventAttributes retryState. */
                    public retryState: temporal.api.enums.v1.RetryState;

                    /**
                     * Creates a new ChildWorkflowExecutionTimedOutEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ChildWorkflowExecutionTimedOutEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IChildWorkflowExecutionTimedOutEventAttributes): temporal.api.history.v1.ChildWorkflowExecutionTimedOutEventAttributes;

                    /**
                     * Encodes the specified ChildWorkflowExecutionTimedOutEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionTimedOutEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionTimedOutEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IChildWorkflowExecutionTimedOutEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ChildWorkflowExecutionTimedOutEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionTimedOutEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionTimedOutEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IChildWorkflowExecutionTimedOutEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ChildWorkflowExecutionTimedOutEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ChildWorkflowExecutionTimedOutEventAttributes
                     * @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): temporal.api.history.v1.ChildWorkflowExecutionTimedOutEventAttributes;

                    /**
                     * Decodes a ChildWorkflowExecutionTimedOutEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ChildWorkflowExecutionTimedOutEventAttributes
                     * @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)): temporal.api.history.v1.ChildWorkflowExecutionTimedOutEventAttributes;

                    /**
                     * Creates a ChildWorkflowExecutionTimedOutEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ChildWorkflowExecutionTimedOutEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ChildWorkflowExecutionTimedOutEventAttributes;

                    /**
                     * Creates a plain object from a ChildWorkflowExecutionTimedOutEventAttributes message. Also converts values to other types if specified.
                     * @param message ChildWorkflowExecutionTimedOutEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ChildWorkflowExecutionTimedOutEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ChildWorkflowExecutionTimedOutEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ChildWorkflowExecutionTimedOutEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ChildWorkflowExecutionTerminatedEventAttributes. */
                interface IChildWorkflowExecutionTerminatedEventAttributes {

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    namespace?: (string|null);

                    /** ChildWorkflowExecutionTerminatedEventAttributes namespaceId */
                    namespaceId?: (string|null);

                    /** ChildWorkflowExecutionTerminatedEventAttributes workflowExecution */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionTerminatedEventAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    initiatedEventId?: (Long|null);

                    /** Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to */
                    startedEventId?: (Long|null);
                }

                /** Represents a ChildWorkflowExecutionTerminatedEventAttributes. */
                class ChildWorkflowExecutionTerminatedEventAttributes implements IChildWorkflowExecutionTerminatedEventAttributes {

                    /**
                     * Constructs a new ChildWorkflowExecutionTerminatedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IChildWorkflowExecutionTerminatedEventAttributes);

                    /**
                     * Namespace of the child workflow.
                     * SDKs and UI tools should use `namespace` field but server must use `namespace_id` only.
                     */
                    public namespace: string;

                    /** ChildWorkflowExecutionTerminatedEventAttributes namespaceId. */
                    public namespaceId: string;

                    /** ChildWorkflowExecutionTerminatedEventAttributes workflowExecution. */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** ChildWorkflowExecutionTerminatedEventAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to */
                    public initiatedEventId: Long;

                    /** Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to */
                    public startedEventId: Long;

                    /**
                     * Creates a new ChildWorkflowExecutionTerminatedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ChildWorkflowExecutionTerminatedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IChildWorkflowExecutionTerminatedEventAttributes): temporal.api.history.v1.ChildWorkflowExecutionTerminatedEventAttributes;

                    /**
                     * Encodes the specified ChildWorkflowExecutionTerminatedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionTerminatedEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionTerminatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IChildWorkflowExecutionTerminatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ChildWorkflowExecutionTerminatedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ChildWorkflowExecutionTerminatedEventAttributes.verify|verify} messages.
                     * @param message ChildWorkflowExecutionTerminatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IChildWorkflowExecutionTerminatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ChildWorkflowExecutionTerminatedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ChildWorkflowExecutionTerminatedEventAttributes
                     * @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): temporal.api.history.v1.ChildWorkflowExecutionTerminatedEventAttributes;

                    /**
                     * Decodes a ChildWorkflowExecutionTerminatedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ChildWorkflowExecutionTerminatedEventAttributes
                     * @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)): temporal.api.history.v1.ChildWorkflowExecutionTerminatedEventAttributes;

                    /**
                     * Creates a ChildWorkflowExecutionTerminatedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ChildWorkflowExecutionTerminatedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ChildWorkflowExecutionTerminatedEventAttributes;

                    /**
                     * Creates a plain object from a ChildWorkflowExecutionTerminatedEventAttributes message. Also converts values to other types if specified.
                     * @param message ChildWorkflowExecutionTerminatedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ChildWorkflowExecutionTerminatedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ChildWorkflowExecutionTerminatedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ChildWorkflowExecutionTerminatedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionOptionsUpdatedEventAttributes. */
                interface IWorkflowExecutionOptionsUpdatedEventAttributes {

                    /**
                     * Versioning override upserted in this event.
                     * Ignored if nil or if unset_versioning_override is true.
                     */
                    versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /** Versioning override removed in this event. */
                    unsetVersioningOverride?: (boolean|null);

                    /**
                     * Request ID attached to the running workflow execution so that subsequent requests with same
                     * request ID will be deduped.
                     */
                    attachedRequestId?: (string|null);

                    /** Completion callbacks attached to the running workflow execution. */
                    attachedCompletionCallbacks?: (temporal.api.common.v1.ICallback[]|null);

                    /** Optional. The identity of the client who initiated the request that created this event. */
                    identity?: (string|null);

                    /**
                     * Priority override upserted in this event. Represents the full priority; not just partial fields.
                     * Ignored if nil.
                     */
                    priority?: (temporal.api.common.v1.IPriority|null);
                }

                /** Represents a WorkflowExecutionOptionsUpdatedEventAttributes. */
                class WorkflowExecutionOptionsUpdatedEventAttributes implements IWorkflowExecutionOptionsUpdatedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionOptionsUpdatedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionOptionsUpdatedEventAttributes);

                    /**
                     * Versioning override upserted in this event.
                     * Ignored if nil or if unset_versioning_override is true.
                     */
                    public versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /** Versioning override removed in this event. */
                    public unsetVersioningOverride: boolean;

                    /**
                     * Request ID attached to the running workflow execution so that subsequent requests with same
                     * request ID will be deduped.
                     */
                    public attachedRequestId: string;

                    /** Completion callbacks attached to the running workflow execution. */
                    public attachedCompletionCallbacks: temporal.api.common.v1.ICallback[];

                    /** Optional. The identity of the client who initiated the request that created this event. */
                    public identity: string;

                    /**
                     * Priority override upserted in this event. Represents the full priority; not just partial fields.
                     * Ignored if nil.
                     */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * Creates a new WorkflowExecutionOptionsUpdatedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionOptionsUpdatedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionOptionsUpdatedEventAttributes): temporal.api.history.v1.WorkflowExecutionOptionsUpdatedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionOptionsUpdatedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionOptionsUpdatedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionOptionsUpdatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionOptionsUpdatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionOptionsUpdatedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionOptionsUpdatedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionOptionsUpdatedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionOptionsUpdatedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionOptionsUpdatedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionOptionsUpdatedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionOptionsUpdatedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionOptionsUpdatedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionOptionsUpdatedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionOptionsUpdatedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionOptionsUpdatedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionOptionsUpdatedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionOptionsUpdatedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionOptionsUpdatedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionOptionsUpdatedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionOptionsUpdatedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionOptionsUpdatedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionOptionsUpdatedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowPropertiesModifiedExternallyEventAttributes. */
                interface IWorkflowPropertiesModifiedExternallyEventAttributes {

                    /** Not used. */
                    newTaskQueue?: (string|null);

                    /** Not used. */
                    newWorkflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** Not used. */
                    newWorkflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Not used. */
                    newWorkflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Not used. */
                    upsertedMemo?: (temporal.api.common.v1.IMemo|null);
                }

                /** Not used anywhere. Use case is replaced by WorkflowExecutionOptionsUpdatedEventAttributes */
                class WorkflowPropertiesModifiedExternallyEventAttributes implements IWorkflowPropertiesModifiedExternallyEventAttributes {

                    /**
                     * Constructs a new WorkflowPropertiesModifiedExternallyEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowPropertiesModifiedExternallyEventAttributes);

                    /** Not used. */
                    public newTaskQueue: string;

                    /** Not used. */
                    public newWorkflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** Not used. */
                    public newWorkflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Not used. */
                    public newWorkflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Not used. */
                    public upsertedMemo?: (temporal.api.common.v1.IMemo|null);

                    /**
                     * Creates a new WorkflowPropertiesModifiedExternallyEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowPropertiesModifiedExternallyEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowPropertiesModifiedExternallyEventAttributes): temporal.api.history.v1.WorkflowPropertiesModifiedExternallyEventAttributes;

                    /**
                     * Encodes the specified WorkflowPropertiesModifiedExternallyEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowPropertiesModifiedExternallyEventAttributes.verify|verify} messages.
                     * @param message WorkflowPropertiesModifiedExternallyEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowPropertiesModifiedExternallyEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowPropertiesModifiedExternallyEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowPropertiesModifiedExternallyEventAttributes.verify|verify} messages.
                     * @param message WorkflowPropertiesModifiedExternallyEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowPropertiesModifiedExternallyEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowPropertiesModifiedExternallyEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowPropertiesModifiedExternallyEventAttributes
                     * @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): temporal.api.history.v1.WorkflowPropertiesModifiedExternallyEventAttributes;

                    /**
                     * Decodes a WorkflowPropertiesModifiedExternallyEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowPropertiesModifiedExternallyEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowPropertiesModifiedExternallyEventAttributes;

                    /**
                     * Creates a WorkflowPropertiesModifiedExternallyEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowPropertiesModifiedExternallyEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowPropertiesModifiedExternallyEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowPropertiesModifiedExternallyEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowPropertiesModifiedExternallyEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowPropertiesModifiedExternallyEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowPropertiesModifiedExternallyEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowPropertiesModifiedExternallyEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ActivityPropertiesModifiedExternallyEventAttributes. */
                interface IActivityPropertiesModifiedExternallyEventAttributes {

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this modification corresponds to. */
                    scheduledEventId?: (Long|null);

                    /**
                     * If set, update the retry policy of the activity, replacing it with the specified one.
                     * The number of attempts at the activity is preserved.
                     */
                    newRetryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);
                }

                /** Represents an ActivityPropertiesModifiedExternallyEventAttributes. */
                class ActivityPropertiesModifiedExternallyEventAttributes implements IActivityPropertiesModifiedExternallyEventAttributes {

                    /**
                     * Constructs a new ActivityPropertiesModifiedExternallyEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IActivityPropertiesModifiedExternallyEventAttributes);

                    /** The id of the `ACTIVITY_TASK_SCHEDULED` event this modification corresponds to. */
                    public scheduledEventId: Long;

                    /**
                     * If set, update the retry policy of the activity, replacing it with the specified one.
                     * The number of attempts at the activity is preserved.
                     */
                    public newRetryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /**
                     * Creates a new ActivityPropertiesModifiedExternallyEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityPropertiesModifiedExternallyEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IActivityPropertiesModifiedExternallyEventAttributes): temporal.api.history.v1.ActivityPropertiesModifiedExternallyEventAttributes;

                    /**
                     * Encodes the specified ActivityPropertiesModifiedExternallyEventAttributes message. Does not implicitly {@link temporal.api.history.v1.ActivityPropertiesModifiedExternallyEventAttributes.verify|verify} messages.
                     * @param message ActivityPropertiesModifiedExternallyEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IActivityPropertiesModifiedExternallyEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityPropertiesModifiedExternallyEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.ActivityPropertiesModifiedExternallyEventAttributes.verify|verify} messages.
                     * @param message ActivityPropertiesModifiedExternallyEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IActivityPropertiesModifiedExternallyEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityPropertiesModifiedExternallyEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityPropertiesModifiedExternallyEventAttributes
                     * @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): temporal.api.history.v1.ActivityPropertiesModifiedExternallyEventAttributes;

                    /**
                     * Decodes an ActivityPropertiesModifiedExternallyEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityPropertiesModifiedExternallyEventAttributes
                     * @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)): temporal.api.history.v1.ActivityPropertiesModifiedExternallyEventAttributes;

                    /**
                     * Creates an ActivityPropertiesModifiedExternallyEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityPropertiesModifiedExternallyEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.ActivityPropertiesModifiedExternallyEventAttributes;

                    /**
                     * Creates a plain object from an ActivityPropertiesModifiedExternallyEventAttributes message. Also converts values to other types if specified.
                     * @param message ActivityPropertiesModifiedExternallyEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.ActivityPropertiesModifiedExternallyEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityPropertiesModifiedExternallyEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityPropertiesModifiedExternallyEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionUpdateAcceptedEventAttributes. */
                interface IWorkflowExecutionUpdateAcceptedEventAttributes {

                    /** The instance ID of the update protocol that generated this event. */
                    protocolInstanceId?: (string|null);

                    /**
                     * The message ID of the original request message that initiated this
                     * update. Needed so that the worker can recreate and deliver that same
                     * message as part of replay.
                     */
                    acceptedRequestMessageId?: (string|null);

                    /** The event ID used to sequence the original request message. */
                    acceptedRequestSequencingEventId?: (Long|null);

                    /**
                     * The message payload of the original request message that initiated this
                     * update.
                     */
                    acceptedRequest?: (temporal.api.update.v1.IRequest|null);
                }

                /** Represents a WorkflowExecutionUpdateAcceptedEventAttributes. */
                class WorkflowExecutionUpdateAcceptedEventAttributes implements IWorkflowExecutionUpdateAcceptedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionUpdateAcceptedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionUpdateAcceptedEventAttributes);

                    /** The instance ID of the update protocol that generated this event. */
                    public protocolInstanceId: string;

                    /**
                     * The message ID of the original request message that initiated this
                     * update. Needed so that the worker can recreate and deliver that same
                     * message as part of replay.
                     */
                    public acceptedRequestMessageId: string;

                    /** The event ID used to sequence the original request message. */
                    public acceptedRequestSequencingEventId: Long;

                    /**
                     * The message payload of the original request message that initiated this
                     * update.
                     */
                    public acceptedRequest?: (temporal.api.update.v1.IRequest|null);

                    /**
                     * Creates a new WorkflowExecutionUpdateAcceptedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionUpdateAcceptedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionUpdateAcceptedEventAttributes): temporal.api.history.v1.WorkflowExecutionUpdateAcceptedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionUpdateAcceptedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionUpdateAcceptedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionUpdateAcceptedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionUpdateAcceptedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionUpdateAcceptedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionUpdateAcceptedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionUpdateAcceptedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionUpdateAcceptedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionUpdateAcceptedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionUpdateAcceptedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionUpdateAcceptedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionUpdateAcceptedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionUpdateAcceptedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionUpdateAcceptedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionUpdateAcceptedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionUpdateAcceptedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionUpdateAcceptedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionUpdateAcceptedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionUpdateAcceptedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionUpdateAcceptedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionUpdateAcceptedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionUpdateAcceptedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionUpdateCompletedEventAttributes. */
                interface IWorkflowExecutionUpdateCompletedEventAttributes {

                    /** The metadata about this update. */
                    meta?: (temporal.api.update.v1.IMeta|null);

                    /** The event ID indicating the acceptance of this update. */
                    acceptedEventId?: (Long|null);

                    /** The outcome of executing the workflow update function. */
                    outcome?: (temporal.api.update.v1.IOutcome|null);
                }

                /** Represents a WorkflowExecutionUpdateCompletedEventAttributes. */
                class WorkflowExecutionUpdateCompletedEventAttributes implements IWorkflowExecutionUpdateCompletedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionUpdateCompletedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionUpdateCompletedEventAttributes);

                    /** The metadata about this update. */
                    public meta?: (temporal.api.update.v1.IMeta|null);

                    /** The event ID indicating the acceptance of this update. */
                    public acceptedEventId: Long;

                    /** The outcome of executing the workflow update function. */
                    public outcome?: (temporal.api.update.v1.IOutcome|null);

                    /**
                     * Creates a new WorkflowExecutionUpdateCompletedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionUpdateCompletedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionUpdateCompletedEventAttributes): temporal.api.history.v1.WorkflowExecutionUpdateCompletedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionUpdateCompletedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionUpdateCompletedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionUpdateCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionUpdateCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionUpdateCompletedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionUpdateCompletedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionUpdateCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionUpdateCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionUpdateCompletedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionUpdateCompletedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionUpdateCompletedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionUpdateCompletedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionUpdateCompletedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionUpdateCompletedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionUpdateCompletedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionUpdateCompletedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionUpdateCompletedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionUpdateCompletedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionUpdateCompletedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionUpdateCompletedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionUpdateCompletedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionUpdateCompletedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionUpdateRejectedEventAttributes. */
                interface IWorkflowExecutionUpdateRejectedEventAttributes {

                    /** The instance ID of the update protocol that generated this event. */
                    protocolInstanceId?: (string|null);

                    /**
                     * The message ID of the original request message that initiated this
                     * update. Needed so that the worker can recreate and deliver that same
                     * message as part of replay.
                     */
                    rejectedRequestMessageId?: (string|null);

                    /** The event ID used to sequence the original request message. */
                    rejectedRequestSequencingEventId?: (Long|null);

                    /**
                     * The message payload of the original request message that initiated this
                     * update.
                     */
                    rejectedRequest?: (temporal.api.update.v1.IRequest|null);

                    /** The cause of rejection. */
                    failure?: (temporal.api.failure.v1.IFailure|null);
                }

                /** Represents a WorkflowExecutionUpdateRejectedEventAttributes. */
                class WorkflowExecutionUpdateRejectedEventAttributes implements IWorkflowExecutionUpdateRejectedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionUpdateRejectedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionUpdateRejectedEventAttributes);

                    /** The instance ID of the update protocol that generated this event. */
                    public protocolInstanceId: string;

                    /**
                     * The message ID of the original request message that initiated this
                     * update. Needed so that the worker can recreate and deliver that same
                     * message as part of replay.
                     */
                    public rejectedRequestMessageId: string;

                    /** The event ID used to sequence the original request message. */
                    public rejectedRequestSequencingEventId: Long;

                    /**
                     * The message payload of the original request message that initiated this
                     * update.
                     */
                    public rejectedRequest?: (temporal.api.update.v1.IRequest|null);

                    /** The cause of rejection. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Creates a new WorkflowExecutionUpdateRejectedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionUpdateRejectedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionUpdateRejectedEventAttributes): temporal.api.history.v1.WorkflowExecutionUpdateRejectedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionUpdateRejectedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionUpdateRejectedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionUpdateRejectedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionUpdateRejectedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionUpdateRejectedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionUpdateRejectedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionUpdateRejectedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionUpdateRejectedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionUpdateRejectedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionUpdateRejectedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionUpdateRejectedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionUpdateRejectedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionUpdateRejectedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionUpdateRejectedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionUpdateRejectedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionUpdateRejectedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionUpdateRejectedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionUpdateRejectedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionUpdateRejectedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionUpdateRejectedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionUpdateRejectedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionUpdateRejectedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionUpdateAdmittedEventAttributes. */
                interface IWorkflowExecutionUpdateAdmittedEventAttributes {

                    /** The update request associated with this event. */
                    request?: (temporal.api.update.v1.IRequest|null);

                    /** An explanation of why this event was written to history. */
                    origin?: (temporal.api.enums.v1.UpdateAdmittedEventOrigin|null);
                }

                /** Represents a WorkflowExecutionUpdateAdmittedEventAttributes. */
                class WorkflowExecutionUpdateAdmittedEventAttributes implements IWorkflowExecutionUpdateAdmittedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionUpdateAdmittedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionUpdateAdmittedEventAttributes);

                    /** The update request associated with this event. */
                    public request?: (temporal.api.update.v1.IRequest|null);

                    /** An explanation of why this event was written to history. */
                    public origin: temporal.api.enums.v1.UpdateAdmittedEventOrigin;

                    /**
                     * Creates a new WorkflowExecutionUpdateAdmittedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionUpdateAdmittedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionUpdateAdmittedEventAttributes): temporal.api.history.v1.WorkflowExecutionUpdateAdmittedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionUpdateAdmittedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionUpdateAdmittedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionUpdateAdmittedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionUpdateAdmittedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionUpdateAdmittedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionUpdateAdmittedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionUpdateAdmittedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionUpdateAdmittedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionUpdateAdmittedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionUpdateAdmittedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionUpdateAdmittedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionUpdateAdmittedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionUpdateAdmittedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionUpdateAdmittedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionUpdateAdmittedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionUpdateAdmittedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionUpdateAdmittedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionUpdateAdmittedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionUpdateAdmittedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionUpdateAdmittedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionUpdateAdmittedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionUpdateAdmittedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionPausedEventAttributes. */
                interface IWorkflowExecutionPausedEventAttributes {

                    /** The identity of the client who paused the workflow execution. */
                    identity?: (string|null);

                    /** The reason for pausing the workflow execution. */
                    reason?: (string|null);

                    /** The request ID of the request that paused the workflow execution. */
                    requestId?: (string|null);
                }

                /** Attributes for an event marking that a workflow execution was paused. */
                class WorkflowExecutionPausedEventAttributes implements IWorkflowExecutionPausedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionPausedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionPausedEventAttributes);

                    /** The identity of the client who paused the workflow execution. */
                    public identity: string;

                    /** The reason for pausing the workflow execution. */
                    public reason: string;

                    /** The request ID of the request that paused the workflow execution. */
                    public requestId: string;

                    /**
                     * Creates a new WorkflowExecutionPausedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionPausedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionPausedEventAttributes): temporal.api.history.v1.WorkflowExecutionPausedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionPausedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionPausedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionPausedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionPausedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionPausedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionPausedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionPausedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionPausedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionPausedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionPausedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionPausedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionPausedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionPausedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionPausedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionPausedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionPausedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionPausedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionPausedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionPausedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionPausedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionPausedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionPausedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionUnpausedEventAttributes. */
                interface IWorkflowExecutionUnpausedEventAttributes {

                    /** The identity of the client who unpaused the workflow execution. */
                    identity?: (string|null);

                    /** The reason for unpausing the workflow execution. */
                    reason?: (string|null);

                    /** The request ID of the request that unpaused the workflow execution. */
                    requestId?: (string|null);
                }

                /** Attributes for an event marking that a workflow execution was unpaused. */
                class WorkflowExecutionUnpausedEventAttributes implements IWorkflowExecutionUnpausedEventAttributes {

                    /**
                     * Constructs a new WorkflowExecutionUnpausedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IWorkflowExecutionUnpausedEventAttributes);

                    /** The identity of the client who unpaused the workflow execution. */
                    public identity: string;

                    /** The reason for unpausing the workflow execution. */
                    public reason: string;

                    /** The request ID of the request that unpaused the workflow execution. */
                    public requestId: string;

                    /**
                     * Creates a new WorkflowExecutionUnpausedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionUnpausedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.IWorkflowExecutionUnpausedEventAttributes): temporal.api.history.v1.WorkflowExecutionUnpausedEventAttributes;

                    /**
                     * Encodes the specified WorkflowExecutionUnpausedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionUnpausedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionUnpausedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IWorkflowExecutionUnpausedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionUnpausedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.WorkflowExecutionUnpausedEventAttributes.verify|verify} messages.
                     * @param message WorkflowExecutionUnpausedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IWorkflowExecutionUnpausedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionUnpausedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionUnpausedEventAttributes
                     * @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): temporal.api.history.v1.WorkflowExecutionUnpausedEventAttributes;

                    /**
                     * Decodes a WorkflowExecutionUnpausedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionUnpausedEventAttributes
                     * @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)): temporal.api.history.v1.WorkflowExecutionUnpausedEventAttributes;

                    /**
                     * Creates a WorkflowExecutionUnpausedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionUnpausedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.WorkflowExecutionUnpausedEventAttributes;

                    /**
                     * Creates a plain object from a WorkflowExecutionUnpausedEventAttributes message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionUnpausedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.WorkflowExecutionUnpausedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionUnpausedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionUnpausedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusOperationScheduledEventAttributes. */
                interface INexusOperationScheduledEventAttributes {

                    /** Endpoint name, must exist in the endpoint registry. */
                    endpoint?: (string|null);

                    /** Service name. */
                    service?: (string|null);

                    /** Operation name. */
                    operation?: (string|null);

                    /**
                     * Input for the operation. The server converts this into Nexus request content and the appropriate content headers
                     * internally when sending the StartOperation request. On the handler side, if it is also backed by Temporal, the
                     * content is transformed back to the original Payload stored in this event.
                     */
                    input?: (temporal.api.common.v1.IPayload|null);

                    /**
                     * Schedule-to-close timeout for this operation.
                     * Indicates how long the caller is willing to wait for operation completion.
                     * Calls are retried internally by the server.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Header to attach to the Nexus request. Note these headers are not the same as Temporal headers on internal
                     * activities and child workflows, these are transmitted to Nexus operations that may be external and are not
                     * traditional payloads.
                     */
                    nexusHeader?: ({ [k: string]: string }|null);

                    /** The `WORKFLOW_TASK_COMPLETED` event that the corresponding ScheduleNexusOperation command was reported with. */
                    workflowTaskCompletedEventId?: (Long|null);

                    /**
                     * A unique ID generated by the history service upon creation of this event.
                     * The ID will be transmitted with all nexus StartOperation requests and is used as an idempotentency key.
                     */
                    requestId?: (string|null);

                    /**
                     * Endpoint ID as resolved in the endpoint registry at the time this event was generated.
                     * This is stored on the event and used internally by the server in case the endpoint is renamed from the time the
                     * event was originally scheduled.
                     */
                    endpointId?: (string|null);

                    /**
                     * Schedule-to-start timeout for this operation.
                     * See ScheduleNexusOperationCommandAttributes.schedule_to_start_timeout for details.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Start-to-close timeout for this operation.
                     * See ScheduleNexusOperationCommandAttributes.start_to_close_timeout for details.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    startToCloseTimeout?: (google.protobuf.IDuration|null);
                }

                /** Event marking that an operation was scheduled by a workflow via the ScheduleNexusOperation command. */
                class NexusOperationScheduledEventAttributes implements INexusOperationScheduledEventAttributes {

                    /**
                     * Constructs a new NexusOperationScheduledEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.INexusOperationScheduledEventAttributes);

                    /** Endpoint name, must exist in the endpoint registry. */
                    public endpoint: string;

                    /** Service name. */
                    public service: string;

                    /** Operation name. */
                    public operation: string;

                    /**
                     * Input for the operation. The server converts this into Nexus request content and the appropriate content headers
                     * internally when sending the StartOperation request. On the handler side, if it is also backed by Temporal, the
                     * content is transformed back to the original Payload stored in this event.
                     */
                    public input?: (temporal.api.common.v1.IPayload|null);

                    /**
                     * Schedule-to-close timeout for this operation.
                     * Indicates how long the caller is willing to wait for operation completion.
                     * Calls are retried internally by the server.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Header to attach to the Nexus request. Note these headers are not the same as Temporal headers on internal
                     * activities and child workflows, these are transmitted to Nexus operations that may be external and are not
                     * traditional payloads.
                     */
                    public nexusHeader: { [k: string]: string };

                    /** The `WORKFLOW_TASK_COMPLETED` event that the corresponding ScheduleNexusOperation command was reported with. */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * A unique ID generated by the history service upon creation of this event.
                     * The ID will be transmitted with all nexus StartOperation requests and is used as an idempotentency key.
                     */
                    public requestId: string;

                    /**
                     * Endpoint ID as resolved in the endpoint registry at the time this event was generated.
                     * This is stored on the event and used internally by the server in case the endpoint is renamed from the time the
                     * event was originally scheduled.
                     */
                    public endpointId: string;

                    /**
                     * Schedule-to-start timeout for this operation.
                     * See ScheduleNexusOperationCommandAttributes.schedule_to_start_timeout for details.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Start-to-close timeout for this operation.
                     * See ScheduleNexusOperationCommandAttributes.start_to_close_timeout for details.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Creates a new NexusOperationScheduledEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusOperationScheduledEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.INexusOperationScheduledEventAttributes): temporal.api.history.v1.NexusOperationScheduledEventAttributes;

                    /**
                     * Encodes the specified NexusOperationScheduledEventAttributes message. Does not implicitly {@link temporal.api.history.v1.NexusOperationScheduledEventAttributes.verify|verify} messages.
                     * @param message NexusOperationScheduledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.INexusOperationScheduledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusOperationScheduledEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.NexusOperationScheduledEventAttributes.verify|verify} messages.
                     * @param message NexusOperationScheduledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.INexusOperationScheduledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusOperationScheduledEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusOperationScheduledEventAttributes
                     * @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): temporal.api.history.v1.NexusOperationScheduledEventAttributes;

                    /**
                     * Decodes a NexusOperationScheduledEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusOperationScheduledEventAttributes
                     * @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)): temporal.api.history.v1.NexusOperationScheduledEventAttributes;

                    /**
                     * Creates a NexusOperationScheduledEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusOperationScheduledEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.NexusOperationScheduledEventAttributes;

                    /**
                     * Creates a plain object from a NexusOperationScheduledEventAttributes message. Also converts values to other types if specified.
                     * @param message NexusOperationScheduledEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.NexusOperationScheduledEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusOperationScheduledEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusOperationScheduledEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusOperationStartedEventAttributes. */
                interface INexusOperationStartedEventAttributes {

                    /** The ID of the `NEXUS_OPERATION_SCHEDULED` event this task corresponds to. */
                    scheduledEventId?: (Long|null);

                    /**
                     * The operation ID returned by the Nexus handler in the response to the StartOperation request.
                     * This ID is used when canceling the operation.
                     *
                     * Deprecated: Renamed to operation_token.
                     */
                    operationId?: (string|null);

                    /** The request ID allocated at schedule time. */
                    requestId?: (string|null);

                    /**
                     * The operation token returned by the Nexus handler in the response to the StartOperation request.
                     * This token is used when canceling the operation.
                     */
                    operationToken?: (string|null);
                }

                /**
                 * Event marking an asynchronous operation was started by the responding Nexus handler.
                 * If the operation completes synchronously, this event is not generated.
                 * In rare situations, such as request timeouts, the service may fail to record the actual start time and will fabricate
                 * this event upon receiving the operation completion via callback.
                 */
                class NexusOperationStartedEventAttributes implements INexusOperationStartedEventAttributes {

                    /**
                     * Constructs a new NexusOperationStartedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.INexusOperationStartedEventAttributes);

                    /** The ID of the `NEXUS_OPERATION_SCHEDULED` event this task corresponds to. */
                    public scheduledEventId: Long;

                    /**
                     * The operation ID returned by the Nexus handler in the response to the StartOperation request.
                     * This ID is used when canceling the operation.
                     *
                     * Deprecated: Renamed to operation_token.
                     */
                    public operationId: string;

                    /** The request ID allocated at schedule time. */
                    public requestId: string;

                    /**
                     * The operation token returned by the Nexus handler in the response to the StartOperation request.
                     * This token is used when canceling the operation.
                     */
                    public operationToken: string;

                    /**
                     * Creates a new NexusOperationStartedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusOperationStartedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.INexusOperationStartedEventAttributes): temporal.api.history.v1.NexusOperationStartedEventAttributes;

                    /**
                     * Encodes the specified NexusOperationStartedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.NexusOperationStartedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.INexusOperationStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusOperationStartedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.NexusOperationStartedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationStartedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.INexusOperationStartedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusOperationStartedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusOperationStartedEventAttributes
                     * @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): temporal.api.history.v1.NexusOperationStartedEventAttributes;

                    /**
                     * Decodes a NexusOperationStartedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusOperationStartedEventAttributes
                     * @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)): temporal.api.history.v1.NexusOperationStartedEventAttributes;

                    /**
                     * Creates a NexusOperationStartedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusOperationStartedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.NexusOperationStartedEventAttributes;

                    /**
                     * Creates a plain object from a NexusOperationStartedEventAttributes message. Also converts values to other types if specified.
                     * @param message NexusOperationStartedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.NexusOperationStartedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusOperationStartedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusOperationStartedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusOperationCompletedEventAttributes. */
                interface INexusOperationCompletedEventAttributes {

                    /** The ID of the `NEXUS_OPERATION_SCHEDULED` event. Uniquely identifies this operation. */
                    scheduledEventId?: (Long|null);

                    /**
                     * Serialized result of the Nexus operation. The response of the Nexus handler.
                     * Delivered either via a completion callback or as a response to a synchronous operation.
                     */
                    result?: (temporal.api.common.v1.IPayload|null);

                    /** The request ID allocated at schedule time. */
                    requestId?: (string|null);
                }

                /** Nexus operation completed successfully. */
                class NexusOperationCompletedEventAttributes implements INexusOperationCompletedEventAttributes {

                    /**
                     * Constructs a new NexusOperationCompletedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.INexusOperationCompletedEventAttributes);

                    /** The ID of the `NEXUS_OPERATION_SCHEDULED` event. Uniquely identifies this operation. */
                    public scheduledEventId: Long;

                    /**
                     * Serialized result of the Nexus operation. The response of the Nexus handler.
                     * Delivered either via a completion callback or as a response to a synchronous operation.
                     */
                    public result?: (temporal.api.common.v1.IPayload|null);

                    /** The request ID allocated at schedule time. */
                    public requestId: string;

                    /**
                     * Creates a new NexusOperationCompletedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusOperationCompletedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.INexusOperationCompletedEventAttributes): temporal.api.history.v1.NexusOperationCompletedEventAttributes;

                    /**
                     * Encodes the specified NexusOperationCompletedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.NexusOperationCompletedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.INexusOperationCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusOperationCompletedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.NexusOperationCompletedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.INexusOperationCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusOperationCompletedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusOperationCompletedEventAttributes
                     * @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): temporal.api.history.v1.NexusOperationCompletedEventAttributes;

                    /**
                     * Decodes a NexusOperationCompletedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusOperationCompletedEventAttributes
                     * @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)): temporal.api.history.v1.NexusOperationCompletedEventAttributes;

                    /**
                     * Creates a NexusOperationCompletedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusOperationCompletedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.NexusOperationCompletedEventAttributes;

                    /**
                     * Creates a plain object from a NexusOperationCompletedEventAttributes message. Also converts values to other types if specified.
                     * @param message NexusOperationCompletedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.NexusOperationCompletedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusOperationCompletedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusOperationCompletedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusOperationFailedEventAttributes. */
                interface INexusOperationFailedEventAttributes {

                    /** The ID of the `NEXUS_OPERATION_SCHEDULED` event. Uniquely identifies this operation. */
                    scheduledEventId?: (Long|null);

                    /** Failure details. A NexusOperationFailureInfo wrapping an ApplicationFailureInfo. */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The request ID allocated at schedule time. */
                    requestId?: (string|null);
                }

                /** Nexus operation failed. */
                class NexusOperationFailedEventAttributes implements INexusOperationFailedEventAttributes {

                    /**
                     * Constructs a new NexusOperationFailedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.INexusOperationFailedEventAttributes);

                    /** The ID of the `NEXUS_OPERATION_SCHEDULED` event. Uniquely identifies this operation. */
                    public scheduledEventId: Long;

                    /** Failure details. A NexusOperationFailureInfo wrapping an ApplicationFailureInfo. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The request ID allocated at schedule time. */
                    public requestId: string;

                    /**
                     * Creates a new NexusOperationFailedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusOperationFailedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.INexusOperationFailedEventAttributes): temporal.api.history.v1.NexusOperationFailedEventAttributes;

                    /**
                     * Encodes the specified NexusOperationFailedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.NexusOperationFailedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.INexusOperationFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusOperationFailedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.NexusOperationFailedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.INexusOperationFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusOperationFailedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusOperationFailedEventAttributes
                     * @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): temporal.api.history.v1.NexusOperationFailedEventAttributes;

                    /**
                     * Decodes a NexusOperationFailedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusOperationFailedEventAttributes
                     * @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)): temporal.api.history.v1.NexusOperationFailedEventAttributes;

                    /**
                     * Creates a NexusOperationFailedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusOperationFailedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.NexusOperationFailedEventAttributes;

                    /**
                     * Creates a plain object from a NexusOperationFailedEventAttributes message. Also converts values to other types if specified.
                     * @param message NexusOperationFailedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.NexusOperationFailedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusOperationFailedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusOperationFailedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusOperationTimedOutEventAttributes. */
                interface INexusOperationTimedOutEventAttributes {

                    /** The ID of the `NEXUS_OPERATION_SCHEDULED` event. Uniquely identifies this operation. */
                    scheduledEventId?: (Long|null);

                    /** Failure details. A NexusOperationFailureInfo wrapping a CanceledFailureInfo. */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The request ID allocated at schedule time. */
                    requestId?: (string|null);
                }

                /** Nexus operation timed out. */
                class NexusOperationTimedOutEventAttributes implements INexusOperationTimedOutEventAttributes {

                    /**
                     * Constructs a new NexusOperationTimedOutEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.INexusOperationTimedOutEventAttributes);

                    /** The ID of the `NEXUS_OPERATION_SCHEDULED` event. Uniquely identifies this operation. */
                    public scheduledEventId: Long;

                    /** Failure details. A NexusOperationFailureInfo wrapping a CanceledFailureInfo. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The request ID allocated at schedule time. */
                    public requestId: string;

                    /**
                     * Creates a new NexusOperationTimedOutEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusOperationTimedOutEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.INexusOperationTimedOutEventAttributes): temporal.api.history.v1.NexusOperationTimedOutEventAttributes;

                    /**
                     * Encodes the specified NexusOperationTimedOutEventAttributes message. Does not implicitly {@link temporal.api.history.v1.NexusOperationTimedOutEventAttributes.verify|verify} messages.
                     * @param message NexusOperationTimedOutEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.INexusOperationTimedOutEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusOperationTimedOutEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.NexusOperationTimedOutEventAttributes.verify|verify} messages.
                     * @param message NexusOperationTimedOutEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.INexusOperationTimedOutEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusOperationTimedOutEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusOperationTimedOutEventAttributes
                     * @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): temporal.api.history.v1.NexusOperationTimedOutEventAttributes;

                    /**
                     * Decodes a NexusOperationTimedOutEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusOperationTimedOutEventAttributes
                     * @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)): temporal.api.history.v1.NexusOperationTimedOutEventAttributes;

                    /**
                     * Creates a NexusOperationTimedOutEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusOperationTimedOutEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.NexusOperationTimedOutEventAttributes;

                    /**
                     * Creates a plain object from a NexusOperationTimedOutEventAttributes message. Also converts values to other types if specified.
                     * @param message NexusOperationTimedOutEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.NexusOperationTimedOutEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusOperationTimedOutEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusOperationTimedOutEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusOperationCanceledEventAttributes. */
                interface INexusOperationCanceledEventAttributes {

                    /** The ID of the `NEXUS_OPERATION_SCHEDULED` event. Uniquely identifies this operation. */
                    scheduledEventId?: (Long|null);

                    /** Cancellation details. */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The request ID allocated at schedule time. */
                    requestId?: (string|null);
                }

                /** Nexus operation completed as canceled. May or may not have been due to a cancellation request by the workflow. */
                class NexusOperationCanceledEventAttributes implements INexusOperationCanceledEventAttributes {

                    /**
                     * Constructs a new NexusOperationCanceledEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.INexusOperationCanceledEventAttributes);

                    /** The ID of the `NEXUS_OPERATION_SCHEDULED` event. Uniquely identifies this operation. */
                    public scheduledEventId: Long;

                    /** Cancellation details. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The request ID allocated at schedule time. */
                    public requestId: string;

                    /**
                     * Creates a new NexusOperationCanceledEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusOperationCanceledEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.INexusOperationCanceledEventAttributes): temporal.api.history.v1.NexusOperationCanceledEventAttributes;

                    /**
                     * Encodes the specified NexusOperationCanceledEventAttributes message. Does not implicitly {@link temporal.api.history.v1.NexusOperationCanceledEventAttributes.verify|verify} messages.
                     * @param message NexusOperationCanceledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.INexusOperationCanceledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusOperationCanceledEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.NexusOperationCanceledEventAttributes.verify|verify} messages.
                     * @param message NexusOperationCanceledEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.INexusOperationCanceledEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusOperationCanceledEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusOperationCanceledEventAttributes
                     * @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): temporal.api.history.v1.NexusOperationCanceledEventAttributes;

                    /**
                     * Decodes a NexusOperationCanceledEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusOperationCanceledEventAttributes
                     * @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)): temporal.api.history.v1.NexusOperationCanceledEventAttributes;

                    /**
                     * Creates a NexusOperationCanceledEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusOperationCanceledEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.NexusOperationCanceledEventAttributes;

                    /**
                     * Creates a plain object from a NexusOperationCanceledEventAttributes message. Also converts values to other types if specified.
                     * @param message NexusOperationCanceledEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.NexusOperationCanceledEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusOperationCanceledEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusOperationCanceledEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusOperationCancelRequestedEventAttributes. */
                interface INexusOperationCancelRequestedEventAttributes {

                    /** The id of the `NEXUS_OPERATION_SCHEDULED` event this cancel request corresponds to. */
                    scheduledEventId?: (Long|null);

                    /**
                     * The `WORKFLOW_TASK_COMPLETED` event that the corresponding RequestCancelNexusOperation command was reported
                     * with.
                     */
                    workflowTaskCompletedEventId?: (Long|null);
                }

                /** Represents a NexusOperationCancelRequestedEventAttributes. */
                class NexusOperationCancelRequestedEventAttributes implements INexusOperationCancelRequestedEventAttributes {

                    /**
                     * Constructs a new NexusOperationCancelRequestedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.INexusOperationCancelRequestedEventAttributes);

                    /** The id of the `NEXUS_OPERATION_SCHEDULED` event this cancel request corresponds to. */
                    public scheduledEventId: Long;

                    /**
                     * The `WORKFLOW_TASK_COMPLETED` event that the corresponding RequestCancelNexusOperation command was reported
                     * with.
                     */
                    public workflowTaskCompletedEventId: Long;

                    /**
                     * Creates a new NexusOperationCancelRequestedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusOperationCancelRequestedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.INexusOperationCancelRequestedEventAttributes): temporal.api.history.v1.NexusOperationCancelRequestedEventAttributes;

                    /**
                     * Encodes the specified NexusOperationCancelRequestedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.NexusOperationCancelRequestedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationCancelRequestedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.INexusOperationCancelRequestedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusOperationCancelRequestedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.NexusOperationCancelRequestedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationCancelRequestedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.INexusOperationCancelRequestedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusOperationCancelRequestedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusOperationCancelRequestedEventAttributes
                     * @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): temporal.api.history.v1.NexusOperationCancelRequestedEventAttributes;

                    /**
                     * Decodes a NexusOperationCancelRequestedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusOperationCancelRequestedEventAttributes
                     * @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)): temporal.api.history.v1.NexusOperationCancelRequestedEventAttributes;

                    /**
                     * Creates a NexusOperationCancelRequestedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusOperationCancelRequestedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.NexusOperationCancelRequestedEventAttributes;

                    /**
                     * Creates a plain object from a NexusOperationCancelRequestedEventAttributes message. Also converts values to other types if specified.
                     * @param message NexusOperationCancelRequestedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.NexusOperationCancelRequestedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusOperationCancelRequestedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusOperationCancelRequestedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusOperationCancelRequestCompletedEventAttributes. */
                interface INexusOperationCancelRequestCompletedEventAttributes {

                    /** The ID of the `NEXUS_OPERATION_CANCEL_REQUESTED` event. */
                    requestedEventId?: (Long|null);

                    /**
                     * The `WORKFLOW_TASK_COMPLETED` event that the corresponding RequestCancelNexusOperation command was reported
                     * with.
                     */
                    workflowTaskCompletedEventId?: (Long|null);

                    /** The id of the `NEXUS_OPERATION_SCHEDULED` event this cancel request corresponds to. */
                    scheduledEventId?: (Long|null);
                }

                /** Represents a NexusOperationCancelRequestCompletedEventAttributes. */
                class NexusOperationCancelRequestCompletedEventAttributes implements INexusOperationCancelRequestCompletedEventAttributes {

                    /**
                     * Constructs a new NexusOperationCancelRequestCompletedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.INexusOperationCancelRequestCompletedEventAttributes);

                    /** The ID of the `NEXUS_OPERATION_CANCEL_REQUESTED` event. */
                    public requestedEventId: Long;

                    /**
                     * The `WORKFLOW_TASK_COMPLETED` event that the corresponding RequestCancelNexusOperation command was reported
                     * with.
                     */
                    public workflowTaskCompletedEventId: Long;

                    /** The id of the `NEXUS_OPERATION_SCHEDULED` event this cancel request corresponds to. */
                    public scheduledEventId: Long;

                    /**
                     * Creates a new NexusOperationCancelRequestCompletedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusOperationCancelRequestCompletedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.INexusOperationCancelRequestCompletedEventAttributes): temporal.api.history.v1.NexusOperationCancelRequestCompletedEventAttributes;

                    /**
                     * Encodes the specified NexusOperationCancelRequestCompletedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.NexusOperationCancelRequestCompletedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationCancelRequestCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.INexusOperationCancelRequestCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusOperationCancelRequestCompletedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.NexusOperationCancelRequestCompletedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationCancelRequestCompletedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.INexusOperationCancelRequestCompletedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusOperationCancelRequestCompletedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusOperationCancelRequestCompletedEventAttributes
                     * @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): temporal.api.history.v1.NexusOperationCancelRequestCompletedEventAttributes;

                    /**
                     * Decodes a NexusOperationCancelRequestCompletedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusOperationCancelRequestCompletedEventAttributes
                     * @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)): temporal.api.history.v1.NexusOperationCancelRequestCompletedEventAttributes;

                    /**
                     * Creates a NexusOperationCancelRequestCompletedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusOperationCancelRequestCompletedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.NexusOperationCancelRequestCompletedEventAttributes;

                    /**
                     * Creates a plain object from a NexusOperationCancelRequestCompletedEventAttributes message. Also converts values to other types if specified.
                     * @param message NexusOperationCancelRequestCompletedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.NexusOperationCancelRequestCompletedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusOperationCancelRequestCompletedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusOperationCancelRequestCompletedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusOperationCancelRequestFailedEventAttributes. */
                interface INexusOperationCancelRequestFailedEventAttributes {

                    /** The ID of the `NEXUS_OPERATION_CANCEL_REQUESTED` event. */
                    requestedEventId?: (Long|null);

                    /**
                     * The `WORKFLOW_TASK_COMPLETED` event that the corresponding RequestCancelNexusOperation command was reported
                     * with.
                     */
                    workflowTaskCompletedEventId?: (Long|null);

                    /** Failure details. A NexusOperationFailureInfo wrapping a CanceledFailureInfo. */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The id of the `NEXUS_OPERATION_SCHEDULED` event this cancel request corresponds to. */
                    scheduledEventId?: (Long|null);
                }

                /** Represents a NexusOperationCancelRequestFailedEventAttributes. */
                class NexusOperationCancelRequestFailedEventAttributes implements INexusOperationCancelRequestFailedEventAttributes {

                    /**
                     * Constructs a new NexusOperationCancelRequestFailedEventAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.INexusOperationCancelRequestFailedEventAttributes);

                    /** The ID of the `NEXUS_OPERATION_CANCEL_REQUESTED` event. */
                    public requestedEventId: Long;

                    /**
                     * The `WORKFLOW_TASK_COMPLETED` event that the corresponding RequestCancelNexusOperation command was reported
                     * with.
                     */
                    public workflowTaskCompletedEventId: Long;

                    /** Failure details. A NexusOperationFailureInfo wrapping a CanceledFailureInfo. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** The id of the `NEXUS_OPERATION_SCHEDULED` event this cancel request corresponds to. */
                    public scheduledEventId: Long;

                    /**
                     * Creates a new NexusOperationCancelRequestFailedEventAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusOperationCancelRequestFailedEventAttributes instance
                     */
                    public static create(properties?: temporal.api.history.v1.INexusOperationCancelRequestFailedEventAttributes): temporal.api.history.v1.NexusOperationCancelRequestFailedEventAttributes;

                    /**
                     * Encodes the specified NexusOperationCancelRequestFailedEventAttributes message. Does not implicitly {@link temporal.api.history.v1.NexusOperationCancelRequestFailedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationCancelRequestFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.INexusOperationCancelRequestFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusOperationCancelRequestFailedEventAttributes message, length delimited. Does not implicitly {@link temporal.api.history.v1.NexusOperationCancelRequestFailedEventAttributes.verify|verify} messages.
                     * @param message NexusOperationCancelRequestFailedEventAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.INexusOperationCancelRequestFailedEventAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusOperationCancelRequestFailedEventAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusOperationCancelRequestFailedEventAttributes
                     * @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): temporal.api.history.v1.NexusOperationCancelRequestFailedEventAttributes;

                    /**
                     * Decodes a NexusOperationCancelRequestFailedEventAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusOperationCancelRequestFailedEventAttributes
                     * @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)): temporal.api.history.v1.NexusOperationCancelRequestFailedEventAttributes;

                    /**
                     * Creates a NexusOperationCancelRequestFailedEventAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusOperationCancelRequestFailedEventAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.NexusOperationCancelRequestFailedEventAttributes;

                    /**
                     * Creates a plain object from a NexusOperationCancelRequestFailedEventAttributes message. Also converts values to other types if specified.
                     * @param message NexusOperationCancelRequestFailedEventAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.NexusOperationCancelRequestFailedEventAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusOperationCancelRequestFailedEventAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusOperationCancelRequestFailedEventAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a HistoryEvent. */
                interface IHistoryEvent {

                    /** Monotonically increasing event number, starts at 1. */
                    eventId?: (Long|null);

                    /** HistoryEvent eventTime */
                    eventTime?: (google.protobuf.ITimestamp|null);

                    /** HistoryEvent eventType */
                    eventType?: (temporal.api.enums.v1.EventType|null);

                    /**
                     * Failover version of the event, used by the server for multi-cluster replication and history
                     * versioning. SDKs generally ignore this field.
                     */
                    version?: (Long|null);

                    /**
                     * Identifier used by the service to order replication and transfer tasks associated with this
                     * event. SDKs generally ignore this field.
                     */
                    taskId?: (Long|null);

                    /**
                     * Set to true when the SDK may ignore the event as it does not impact workflow state or
                     * information in any way that the SDK need be concerned with. If an SDK encounters an event
                     * type which it does not understand, it must error unless this is true. If it is true, it's
                     * acceptable for the event type and/or attributes to be uninterpretable.
                     */
                    workerMayIgnore?: (boolean|null);

                    /**
                     * Metadata on the event. This is often carried over from commands and client calls. Most events
                     * won't have this information, and how this information is used is dependent upon the interface
                     * that reads it.
                     *
                     * Current well-known uses:
                     * workflow_execution_started_event_attributes - summary and details from start workflow.
                     * timer_started_event_attributes - summary represents an identifier for the timer for use by
                     * user interfaces.
                     */
                    userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Links associated with the event. */
                    links?: (temporal.api.common.v1.ILink[]|null);

                    /** HistoryEvent workflowExecutionStartedEventAttributes */
                    workflowExecutionStartedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionStartedEventAttributes|null);

                    /** HistoryEvent workflowExecutionCompletedEventAttributes */
                    workflowExecutionCompletedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionCompletedEventAttributes|null);

                    /** HistoryEvent workflowExecutionFailedEventAttributes */
                    workflowExecutionFailedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionFailedEventAttributes|null);

                    /** HistoryEvent workflowExecutionTimedOutEventAttributes */
                    workflowExecutionTimedOutEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionTimedOutEventAttributes|null);

                    /** HistoryEvent workflowTaskScheduledEventAttributes */
                    workflowTaskScheduledEventAttributes?: (temporal.api.history.v1.IWorkflowTaskScheduledEventAttributes|null);

                    /** HistoryEvent workflowTaskStartedEventAttributes */
                    workflowTaskStartedEventAttributes?: (temporal.api.history.v1.IWorkflowTaskStartedEventAttributes|null);

                    /** HistoryEvent workflowTaskCompletedEventAttributes */
                    workflowTaskCompletedEventAttributes?: (temporal.api.history.v1.IWorkflowTaskCompletedEventAttributes|null);

                    /** HistoryEvent workflowTaskTimedOutEventAttributes */
                    workflowTaskTimedOutEventAttributes?: (temporal.api.history.v1.IWorkflowTaskTimedOutEventAttributes|null);

                    /** HistoryEvent workflowTaskFailedEventAttributes */
                    workflowTaskFailedEventAttributes?: (temporal.api.history.v1.IWorkflowTaskFailedEventAttributes|null);

                    /** HistoryEvent activityTaskScheduledEventAttributes */
                    activityTaskScheduledEventAttributes?: (temporal.api.history.v1.IActivityTaskScheduledEventAttributes|null);

                    /** HistoryEvent activityTaskStartedEventAttributes */
                    activityTaskStartedEventAttributes?: (temporal.api.history.v1.IActivityTaskStartedEventAttributes|null);

                    /** HistoryEvent activityTaskCompletedEventAttributes */
                    activityTaskCompletedEventAttributes?: (temporal.api.history.v1.IActivityTaskCompletedEventAttributes|null);

                    /** HistoryEvent activityTaskFailedEventAttributes */
                    activityTaskFailedEventAttributes?: (temporal.api.history.v1.IActivityTaskFailedEventAttributes|null);

                    /** HistoryEvent activityTaskTimedOutEventAttributes */
                    activityTaskTimedOutEventAttributes?: (temporal.api.history.v1.IActivityTaskTimedOutEventAttributes|null);

                    /** HistoryEvent timerStartedEventAttributes */
                    timerStartedEventAttributes?: (temporal.api.history.v1.ITimerStartedEventAttributes|null);

                    /** HistoryEvent timerFiredEventAttributes */
                    timerFiredEventAttributes?: (temporal.api.history.v1.ITimerFiredEventAttributes|null);

                    /** HistoryEvent activityTaskCancelRequestedEventAttributes */
                    activityTaskCancelRequestedEventAttributes?: (temporal.api.history.v1.IActivityTaskCancelRequestedEventAttributes|null);

                    /** HistoryEvent activityTaskCanceledEventAttributes */
                    activityTaskCanceledEventAttributes?: (temporal.api.history.v1.IActivityTaskCanceledEventAttributes|null);

                    /** HistoryEvent timerCanceledEventAttributes */
                    timerCanceledEventAttributes?: (temporal.api.history.v1.ITimerCanceledEventAttributes|null);

                    /** HistoryEvent markerRecordedEventAttributes */
                    markerRecordedEventAttributes?: (temporal.api.history.v1.IMarkerRecordedEventAttributes|null);

                    /** HistoryEvent workflowExecutionSignaledEventAttributes */
                    workflowExecutionSignaledEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionSignaledEventAttributes|null);

                    /** HistoryEvent workflowExecutionTerminatedEventAttributes */
                    workflowExecutionTerminatedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionTerminatedEventAttributes|null);

                    /** HistoryEvent workflowExecutionCancelRequestedEventAttributes */
                    workflowExecutionCancelRequestedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionCancelRequestedEventAttributes|null);

                    /** HistoryEvent workflowExecutionCanceledEventAttributes */
                    workflowExecutionCanceledEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionCanceledEventAttributes|null);

                    /** HistoryEvent requestCancelExternalWorkflowExecutionInitiatedEventAttributes */
                    requestCancelExternalWorkflowExecutionInitiatedEventAttributes?: (temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionInitiatedEventAttributes|null);

                    /** HistoryEvent requestCancelExternalWorkflowExecutionFailedEventAttributes */
                    requestCancelExternalWorkflowExecutionFailedEventAttributes?: (temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionFailedEventAttributes|null);

                    /** HistoryEvent externalWorkflowExecutionCancelRequestedEventAttributes */
                    externalWorkflowExecutionCancelRequestedEventAttributes?: (temporal.api.history.v1.IExternalWorkflowExecutionCancelRequestedEventAttributes|null);

                    /** HistoryEvent workflowExecutionContinuedAsNewEventAttributes */
                    workflowExecutionContinuedAsNewEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionContinuedAsNewEventAttributes|null);

                    /** HistoryEvent startChildWorkflowExecutionInitiatedEventAttributes */
                    startChildWorkflowExecutionInitiatedEventAttributes?: (temporal.api.history.v1.IStartChildWorkflowExecutionInitiatedEventAttributes|null);

                    /** HistoryEvent startChildWorkflowExecutionFailedEventAttributes */
                    startChildWorkflowExecutionFailedEventAttributes?: (temporal.api.history.v1.IStartChildWorkflowExecutionFailedEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionStartedEventAttributes */
                    childWorkflowExecutionStartedEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionStartedEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionCompletedEventAttributes */
                    childWorkflowExecutionCompletedEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionCompletedEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionFailedEventAttributes */
                    childWorkflowExecutionFailedEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionFailedEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionCanceledEventAttributes */
                    childWorkflowExecutionCanceledEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionCanceledEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionTimedOutEventAttributes */
                    childWorkflowExecutionTimedOutEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionTimedOutEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionTerminatedEventAttributes */
                    childWorkflowExecutionTerminatedEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionTerminatedEventAttributes|null);

                    /** HistoryEvent signalExternalWorkflowExecutionInitiatedEventAttributes */
                    signalExternalWorkflowExecutionInitiatedEventAttributes?: (temporal.api.history.v1.ISignalExternalWorkflowExecutionInitiatedEventAttributes|null);

                    /** HistoryEvent signalExternalWorkflowExecutionFailedEventAttributes */
                    signalExternalWorkflowExecutionFailedEventAttributes?: (temporal.api.history.v1.ISignalExternalWorkflowExecutionFailedEventAttributes|null);

                    /** HistoryEvent externalWorkflowExecutionSignaledEventAttributes */
                    externalWorkflowExecutionSignaledEventAttributes?: (temporal.api.history.v1.IExternalWorkflowExecutionSignaledEventAttributes|null);

                    /** HistoryEvent upsertWorkflowSearchAttributesEventAttributes */
                    upsertWorkflowSearchAttributesEventAttributes?: (temporal.api.history.v1.IUpsertWorkflowSearchAttributesEventAttributes|null);

                    /** HistoryEvent workflowExecutionUpdateAcceptedEventAttributes */
                    workflowExecutionUpdateAcceptedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionUpdateAcceptedEventAttributes|null);

                    /** HistoryEvent workflowExecutionUpdateRejectedEventAttributes */
                    workflowExecutionUpdateRejectedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionUpdateRejectedEventAttributes|null);

                    /** HistoryEvent workflowExecutionUpdateCompletedEventAttributes */
                    workflowExecutionUpdateCompletedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionUpdateCompletedEventAttributes|null);

                    /** HistoryEvent workflowPropertiesModifiedExternallyEventAttributes */
                    workflowPropertiesModifiedExternallyEventAttributes?: (temporal.api.history.v1.IWorkflowPropertiesModifiedExternallyEventAttributes|null);

                    /** HistoryEvent activityPropertiesModifiedExternallyEventAttributes */
                    activityPropertiesModifiedExternallyEventAttributes?: (temporal.api.history.v1.IActivityPropertiesModifiedExternallyEventAttributes|null);

                    /** HistoryEvent workflowPropertiesModifiedEventAttributes */
                    workflowPropertiesModifiedEventAttributes?: (temporal.api.history.v1.IWorkflowPropertiesModifiedEventAttributes|null);

                    /** HistoryEvent workflowExecutionUpdateAdmittedEventAttributes */
                    workflowExecutionUpdateAdmittedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionUpdateAdmittedEventAttributes|null);

                    /** HistoryEvent nexusOperationScheduledEventAttributes */
                    nexusOperationScheduledEventAttributes?: (temporal.api.history.v1.INexusOperationScheduledEventAttributes|null);

                    /** HistoryEvent nexusOperationStartedEventAttributes */
                    nexusOperationStartedEventAttributes?: (temporal.api.history.v1.INexusOperationStartedEventAttributes|null);

                    /** HistoryEvent nexusOperationCompletedEventAttributes */
                    nexusOperationCompletedEventAttributes?: (temporal.api.history.v1.INexusOperationCompletedEventAttributes|null);

                    /** HistoryEvent nexusOperationFailedEventAttributes */
                    nexusOperationFailedEventAttributes?: (temporal.api.history.v1.INexusOperationFailedEventAttributes|null);

                    /** HistoryEvent nexusOperationCanceledEventAttributes */
                    nexusOperationCanceledEventAttributes?: (temporal.api.history.v1.INexusOperationCanceledEventAttributes|null);

                    /** HistoryEvent nexusOperationTimedOutEventAttributes */
                    nexusOperationTimedOutEventAttributes?: (temporal.api.history.v1.INexusOperationTimedOutEventAttributes|null);

                    /** HistoryEvent nexusOperationCancelRequestedEventAttributes */
                    nexusOperationCancelRequestedEventAttributes?: (temporal.api.history.v1.INexusOperationCancelRequestedEventAttributes|null);

                    /** HistoryEvent workflowExecutionOptionsUpdatedEventAttributes */
                    workflowExecutionOptionsUpdatedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionOptionsUpdatedEventAttributes|null);

                    /** HistoryEvent nexusOperationCancelRequestCompletedEventAttributes */
                    nexusOperationCancelRequestCompletedEventAttributes?: (temporal.api.history.v1.INexusOperationCancelRequestCompletedEventAttributes|null);

                    /** HistoryEvent nexusOperationCancelRequestFailedEventAttributes */
                    nexusOperationCancelRequestFailedEventAttributes?: (temporal.api.history.v1.INexusOperationCancelRequestFailedEventAttributes|null);

                    /** HistoryEvent workflowExecutionPausedEventAttributes */
                    workflowExecutionPausedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionPausedEventAttributes|null);

                    /** HistoryEvent workflowExecutionUnpausedEventAttributes */
                    workflowExecutionUnpausedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionUnpausedEventAttributes|null);
                }

                /**
                 * History events are the method by which Temporal SDKs advance (or recreate) workflow state.
                 * See the `EventType` enum for more info about what each event is for.
                 */
                class HistoryEvent implements IHistoryEvent {

                    /**
                     * Constructs a new HistoryEvent.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IHistoryEvent);

                    /** Monotonically increasing event number, starts at 1. */
                    public eventId: Long;

                    /** HistoryEvent eventTime. */
                    public eventTime?: (google.protobuf.ITimestamp|null);

                    /** HistoryEvent eventType. */
                    public eventType: temporal.api.enums.v1.EventType;

                    /**
                     * Failover version of the event, used by the server for multi-cluster replication and history
                     * versioning. SDKs generally ignore this field.
                     */
                    public version: Long;

                    /**
                     * Identifier used by the service to order replication and transfer tasks associated with this
                     * event. SDKs generally ignore this field.
                     */
                    public taskId: Long;

                    /**
                     * Set to true when the SDK may ignore the event as it does not impact workflow state or
                     * information in any way that the SDK need be concerned with. If an SDK encounters an event
                     * type which it does not understand, it must error unless this is true. If it is true, it's
                     * acceptable for the event type and/or attributes to be uninterpretable.
                     */
                    public workerMayIgnore: boolean;

                    /**
                     * Metadata on the event. This is often carried over from commands and client calls. Most events
                     * won't have this information, and how this information is used is dependent upon the interface
                     * that reads it.
                     *
                     * Current well-known uses:
                     * * workflow_execution_started_event_attributes - summary and details from start workflow.
                     * * timer_started_event_attributes - summary represents an identifier for the timer for use by
                     * user interfaces.
                     */
                    public userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Links associated with the event. */
                    public links: temporal.api.common.v1.ILink[];

                    /** HistoryEvent workflowExecutionStartedEventAttributes. */
                    public workflowExecutionStartedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionStartedEventAttributes|null);

                    /** HistoryEvent workflowExecutionCompletedEventAttributes. */
                    public workflowExecutionCompletedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionCompletedEventAttributes|null);

                    /** HistoryEvent workflowExecutionFailedEventAttributes. */
                    public workflowExecutionFailedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionFailedEventAttributes|null);

                    /** HistoryEvent workflowExecutionTimedOutEventAttributes. */
                    public workflowExecutionTimedOutEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionTimedOutEventAttributes|null);

                    /** HistoryEvent workflowTaskScheduledEventAttributes. */
                    public workflowTaskScheduledEventAttributes?: (temporal.api.history.v1.IWorkflowTaskScheduledEventAttributes|null);

                    /** HistoryEvent workflowTaskStartedEventAttributes. */
                    public workflowTaskStartedEventAttributes?: (temporal.api.history.v1.IWorkflowTaskStartedEventAttributes|null);

                    /** HistoryEvent workflowTaskCompletedEventAttributes. */
                    public workflowTaskCompletedEventAttributes?: (temporal.api.history.v1.IWorkflowTaskCompletedEventAttributes|null);

                    /** HistoryEvent workflowTaskTimedOutEventAttributes. */
                    public workflowTaskTimedOutEventAttributes?: (temporal.api.history.v1.IWorkflowTaskTimedOutEventAttributes|null);

                    /** HistoryEvent workflowTaskFailedEventAttributes. */
                    public workflowTaskFailedEventAttributes?: (temporal.api.history.v1.IWorkflowTaskFailedEventAttributes|null);

                    /** HistoryEvent activityTaskScheduledEventAttributes. */
                    public activityTaskScheduledEventAttributes?: (temporal.api.history.v1.IActivityTaskScheduledEventAttributes|null);

                    /** HistoryEvent activityTaskStartedEventAttributes. */
                    public activityTaskStartedEventAttributes?: (temporal.api.history.v1.IActivityTaskStartedEventAttributes|null);

                    /** HistoryEvent activityTaskCompletedEventAttributes. */
                    public activityTaskCompletedEventAttributes?: (temporal.api.history.v1.IActivityTaskCompletedEventAttributes|null);

                    /** HistoryEvent activityTaskFailedEventAttributes. */
                    public activityTaskFailedEventAttributes?: (temporal.api.history.v1.IActivityTaskFailedEventAttributes|null);

                    /** HistoryEvent activityTaskTimedOutEventAttributes. */
                    public activityTaskTimedOutEventAttributes?: (temporal.api.history.v1.IActivityTaskTimedOutEventAttributes|null);

                    /** HistoryEvent timerStartedEventAttributes. */
                    public timerStartedEventAttributes?: (temporal.api.history.v1.ITimerStartedEventAttributes|null);

                    /** HistoryEvent timerFiredEventAttributes. */
                    public timerFiredEventAttributes?: (temporal.api.history.v1.ITimerFiredEventAttributes|null);

                    /** HistoryEvent activityTaskCancelRequestedEventAttributes. */
                    public activityTaskCancelRequestedEventAttributes?: (temporal.api.history.v1.IActivityTaskCancelRequestedEventAttributes|null);

                    /** HistoryEvent activityTaskCanceledEventAttributes. */
                    public activityTaskCanceledEventAttributes?: (temporal.api.history.v1.IActivityTaskCanceledEventAttributes|null);

                    /** HistoryEvent timerCanceledEventAttributes. */
                    public timerCanceledEventAttributes?: (temporal.api.history.v1.ITimerCanceledEventAttributes|null);

                    /** HistoryEvent markerRecordedEventAttributes. */
                    public markerRecordedEventAttributes?: (temporal.api.history.v1.IMarkerRecordedEventAttributes|null);

                    /** HistoryEvent workflowExecutionSignaledEventAttributes. */
                    public workflowExecutionSignaledEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionSignaledEventAttributes|null);

                    /** HistoryEvent workflowExecutionTerminatedEventAttributes. */
                    public workflowExecutionTerminatedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionTerminatedEventAttributes|null);

                    /** HistoryEvent workflowExecutionCancelRequestedEventAttributes. */
                    public workflowExecutionCancelRequestedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionCancelRequestedEventAttributes|null);

                    /** HistoryEvent workflowExecutionCanceledEventAttributes. */
                    public workflowExecutionCanceledEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionCanceledEventAttributes|null);

                    /** HistoryEvent requestCancelExternalWorkflowExecutionInitiatedEventAttributes. */
                    public requestCancelExternalWorkflowExecutionInitiatedEventAttributes?: (temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionInitiatedEventAttributes|null);

                    /** HistoryEvent requestCancelExternalWorkflowExecutionFailedEventAttributes. */
                    public requestCancelExternalWorkflowExecutionFailedEventAttributes?: (temporal.api.history.v1.IRequestCancelExternalWorkflowExecutionFailedEventAttributes|null);

                    /** HistoryEvent externalWorkflowExecutionCancelRequestedEventAttributes. */
                    public externalWorkflowExecutionCancelRequestedEventAttributes?: (temporal.api.history.v1.IExternalWorkflowExecutionCancelRequestedEventAttributes|null);

                    /** HistoryEvent workflowExecutionContinuedAsNewEventAttributes. */
                    public workflowExecutionContinuedAsNewEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionContinuedAsNewEventAttributes|null);

                    /** HistoryEvent startChildWorkflowExecutionInitiatedEventAttributes. */
                    public startChildWorkflowExecutionInitiatedEventAttributes?: (temporal.api.history.v1.IStartChildWorkflowExecutionInitiatedEventAttributes|null);

                    /** HistoryEvent startChildWorkflowExecutionFailedEventAttributes. */
                    public startChildWorkflowExecutionFailedEventAttributes?: (temporal.api.history.v1.IStartChildWorkflowExecutionFailedEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionStartedEventAttributes. */
                    public childWorkflowExecutionStartedEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionStartedEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionCompletedEventAttributes. */
                    public childWorkflowExecutionCompletedEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionCompletedEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionFailedEventAttributes. */
                    public childWorkflowExecutionFailedEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionFailedEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionCanceledEventAttributes. */
                    public childWorkflowExecutionCanceledEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionCanceledEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionTimedOutEventAttributes. */
                    public childWorkflowExecutionTimedOutEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionTimedOutEventAttributes|null);

                    /** HistoryEvent childWorkflowExecutionTerminatedEventAttributes. */
                    public childWorkflowExecutionTerminatedEventAttributes?: (temporal.api.history.v1.IChildWorkflowExecutionTerminatedEventAttributes|null);

                    /** HistoryEvent signalExternalWorkflowExecutionInitiatedEventAttributes. */
                    public signalExternalWorkflowExecutionInitiatedEventAttributes?: (temporal.api.history.v1.ISignalExternalWorkflowExecutionInitiatedEventAttributes|null);

                    /** HistoryEvent signalExternalWorkflowExecutionFailedEventAttributes. */
                    public signalExternalWorkflowExecutionFailedEventAttributes?: (temporal.api.history.v1.ISignalExternalWorkflowExecutionFailedEventAttributes|null);

                    /** HistoryEvent externalWorkflowExecutionSignaledEventAttributes. */
                    public externalWorkflowExecutionSignaledEventAttributes?: (temporal.api.history.v1.IExternalWorkflowExecutionSignaledEventAttributes|null);

                    /** HistoryEvent upsertWorkflowSearchAttributesEventAttributes. */
                    public upsertWorkflowSearchAttributesEventAttributes?: (temporal.api.history.v1.IUpsertWorkflowSearchAttributesEventAttributes|null);

                    /** HistoryEvent workflowExecutionUpdateAcceptedEventAttributes. */
                    public workflowExecutionUpdateAcceptedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionUpdateAcceptedEventAttributes|null);

                    /** HistoryEvent workflowExecutionUpdateRejectedEventAttributes. */
                    public workflowExecutionUpdateRejectedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionUpdateRejectedEventAttributes|null);

                    /** HistoryEvent workflowExecutionUpdateCompletedEventAttributes. */
                    public workflowExecutionUpdateCompletedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionUpdateCompletedEventAttributes|null);

                    /** HistoryEvent workflowPropertiesModifiedExternallyEventAttributes. */
                    public workflowPropertiesModifiedExternallyEventAttributes?: (temporal.api.history.v1.IWorkflowPropertiesModifiedExternallyEventAttributes|null);

                    /** HistoryEvent activityPropertiesModifiedExternallyEventAttributes. */
                    public activityPropertiesModifiedExternallyEventAttributes?: (temporal.api.history.v1.IActivityPropertiesModifiedExternallyEventAttributes|null);

                    /** HistoryEvent workflowPropertiesModifiedEventAttributes. */
                    public workflowPropertiesModifiedEventAttributes?: (temporal.api.history.v1.IWorkflowPropertiesModifiedEventAttributes|null);

                    /** HistoryEvent workflowExecutionUpdateAdmittedEventAttributes. */
                    public workflowExecutionUpdateAdmittedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionUpdateAdmittedEventAttributes|null);

                    /** HistoryEvent nexusOperationScheduledEventAttributes. */
                    public nexusOperationScheduledEventAttributes?: (temporal.api.history.v1.INexusOperationScheduledEventAttributes|null);

                    /** HistoryEvent nexusOperationStartedEventAttributes. */
                    public nexusOperationStartedEventAttributes?: (temporal.api.history.v1.INexusOperationStartedEventAttributes|null);

                    /** HistoryEvent nexusOperationCompletedEventAttributes. */
                    public nexusOperationCompletedEventAttributes?: (temporal.api.history.v1.INexusOperationCompletedEventAttributes|null);

                    /** HistoryEvent nexusOperationFailedEventAttributes. */
                    public nexusOperationFailedEventAttributes?: (temporal.api.history.v1.INexusOperationFailedEventAttributes|null);

                    /** HistoryEvent nexusOperationCanceledEventAttributes. */
                    public nexusOperationCanceledEventAttributes?: (temporal.api.history.v1.INexusOperationCanceledEventAttributes|null);

                    /** HistoryEvent nexusOperationTimedOutEventAttributes. */
                    public nexusOperationTimedOutEventAttributes?: (temporal.api.history.v1.INexusOperationTimedOutEventAttributes|null);

                    /** HistoryEvent nexusOperationCancelRequestedEventAttributes. */
                    public nexusOperationCancelRequestedEventAttributes?: (temporal.api.history.v1.INexusOperationCancelRequestedEventAttributes|null);

                    /** HistoryEvent workflowExecutionOptionsUpdatedEventAttributes. */
                    public workflowExecutionOptionsUpdatedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionOptionsUpdatedEventAttributes|null);

                    /** HistoryEvent nexusOperationCancelRequestCompletedEventAttributes. */
                    public nexusOperationCancelRequestCompletedEventAttributes?: (temporal.api.history.v1.INexusOperationCancelRequestCompletedEventAttributes|null);

                    /** HistoryEvent nexusOperationCancelRequestFailedEventAttributes. */
                    public nexusOperationCancelRequestFailedEventAttributes?: (temporal.api.history.v1.INexusOperationCancelRequestFailedEventAttributes|null);

                    /** HistoryEvent workflowExecutionPausedEventAttributes. */
                    public workflowExecutionPausedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionPausedEventAttributes|null);

                    /** HistoryEvent workflowExecutionUnpausedEventAttributes. */
                    public workflowExecutionUnpausedEventAttributes?: (temporal.api.history.v1.IWorkflowExecutionUnpausedEventAttributes|null);

                    /** The event details. The type must match that in `event_type`. */
                    public attributes?: ("workflowExecutionStartedEventAttributes"|"workflowExecutionCompletedEventAttributes"|"workflowExecutionFailedEventAttributes"|"workflowExecutionTimedOutEventAttributes"|"workflowTaskScheduledEventAttributes"|"workflowTaskStartedEventAttributes"|"workflowTaskCompletedEventAttributes"|"workflowTaskTimedOutEventAttributes"|"workflowTaskFailedEventAttributes"|"activityTaskScheduledEventAttributes"|"activityTaskStartedEventAttributes"|"activityTaskCompletedEventAttributes"|"activityTaskFailedEventAttributes"|"activityTaskTimedOutEventAttributes"|"timerStartedEventAttributes"|"timerFiredEventAttributes"|"activityTaskCancelRequestedEventAttributes"|"activityTaskCanceledEventAttributes"|"timerCanceledEventAttributes"|"markerRecordedEventAttributes"|"workflowExecutionSignaledEventAttributes"|"workflowExecutionTerminatedEventAttributes"|"workflowExecutionCancelRequestedEventAttributes"|"workflowExecutionCanceledEventAttributes"|"requestCancelExternalWorkflowExecutionInitiatedEventAttributes"|"requestCancelExternalWorkflowExecutionFailedEventAttributes"|"externalWorkflowExecutionCancelRequestedEventAttributes"|"workflowExecutionContinuedAsNewEventAttributes"|"startChildWorkflowExecutionInitiatedEventAttributes"|"startChildWorkflowExecutionFailedEventAttributes"|"childWorkflowExecutionStartedEventAttributes"|"childWorkflowExecutionCompletedEventAttributes"|"childWorkflowExecutionFailedEventAttributes"|"childWorkflowExecutionCanceledEventAttributes"|"childWorkflowExecutionTimedOutEventAttributes"|"childWorkflowExecutionTerminatedEventAttributes"|"signalExternalWorkflowExecutionInitiatedEventAttributes"|"signalExternalWorkflowExecutionFailedEventAttributes"|"externalWorkflowExecutionSignaledEventAttributes"|"upsertWorkflowSearchAttributesEventAttributes"|"workflowExecutionUpdateAcceptedEventAttributes"|"workflowExecutionUpdateRejectedEventAttributes"|"workflowExecutionUpdateCompletedEventAttributes"|"workflowPropertiesModifiedExternallyEventAttributes"|"activityPropertiesModifiedExternallyEventAttributes"|"workflowPropertiesModifiedEventAttributes"|"workflowExecutionUpdateAdmittedEventAttributes"|"nexusOperationScheduledEventAttributes"|"nexusOperationStartedEventAttributes"|"nexusOperationCompletedEventAttributes"|"nexusOperationFailedEventAttributes"|"nexusOperationCanceledEventAttributes"|"nexusOperationTimedOutEventAttributes"|"nexusOperationCancelRequestedEventAttributes"|"workflowExecutionOptionsUpdatedEventAttributes"|"nexusOperationCancelRequestCompletedEventAttributes"|"nexusOperationCancelRequestFailedEventAttributes"|"workflowExecutionPausedEventAttributes"|"workflowExecutionUnpausedEventAttributes");

                    /**
                     * Creates a new HistoryEvent instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns HistoryEvent instance
                     */
                    public static create(properties?: temporal.api.history.v1.IHistoryEvent): temporal.api.history.v1.HistoryEvent;

                    /**
                     * Encodes the specified HistoryEvent message. Does not implicitly {@link temporal.api.history.v1.HistoryEvent.verify|verify} messages.
                     * @param message HistoryEvent message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IHistoryEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified HistoryEvent message, length delimited. Does not implicitly {@link temporal.api.history.v1.HistoryEvent.verify|verify} messages.
                     * @param message HistoryEvent message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IHistoryEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a HistoryEvent message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns HistoryEvent
                     * @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): temporal.api.history.v1.HistoryEvent;

                    /**
                     * Decodes a HistoryEvent message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns HistoryEvent
                     * @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)): temporal.api.history.v1.HistoryEvent;

                    /**
                     * Creates a HistoryEvent message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns HistoryEvent
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.HistoryEvent;

                    /**
                     * Creates a plain object from a HistoryEvent message. Also converts values to other types if specified.
                     * @param message HistoryEvent
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.HistoryEvent, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this HistoryEvent to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for HistoryEvent
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a History. */
                interface IHistory {

                    /** History events */
                    events?: (temporal.api.history.v1.IHistoryEvent[]|null);
                }

                /** Represents a History. */
                class History implements IHistory {

                    /**
                     * Constructs a new History.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.history.v1.IHistory);

                    /** History events. */
                    public events: temporal.api.history.v1.IHistoryEvent[];

                    /**
                     * Creates a new History instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns History instance
                     */
                    public static create(properties?: temporal.api.history.v1.IHistory): temporal.api.history.v1.History;

                    /**
                     * Encodes the specified History message. Does not implicitly {@link temporal.api.history.v1.History.verify|verify} messages.
                     * @param message History message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.history.v1.IHistory, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified History message, length delimited. Does not implicitly {@link temporal.api.history.v1.History.verify|verify} messages.
                     * @param message History message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.history.v1.IHistory, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a History message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns History
                     * @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): temporal.api.history.v1.History;

                    /**
                     * Decodes a History message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns History
                     * @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)): temporal.api.history.v1.History;

                    /**
                     * Creates a History message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns History
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.history.v1.History;

                    /**
                     * Creates a plain object from a History message. Also converts values to other types if specified.
                     * @param message History
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.history.v1.History, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this History to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for History
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace workflow. */
        namespace workflow {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a WorkflowExecutionInfo. */
                interface IWorkflowExecutionInfo {

                    /** WorkflowExecutionInfo execution */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** WorkflowExecutionInfo type */
                    type?: (temporal.api.common.v1.IWorkflowType|null);

                    /** WorkflowExecutionInfo startTime */
                    startTime?: (google.protobuf.ITimestamp|null);

                    /** WorkflowExecutionInfo closeTime */
                    closeTime?: (google.protobuf.ITimestamp|null);

                    /** WorkflowExecutionInfo status */
                    status?: (temporal.api.enums.v1.WorkflowExecutionStatus|null);

                    /** WorkflowExecutionInfo historyLength */
                    historyLength?: (Long|null);

                    /** WorkflowExecutionInfo parentNamespaceId */
                    parentNamespaceId?: (string|null);

                    /** WorkflowExecutionInfo parentExecution */
                    parentExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** WorkflowExecutionInfo executionTime */
                    executionTime?: (google.protobuf.ITimestamp|null);

                    /** WorkflowExecutionInfo memo */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** WorkflowExecutionInfo searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** WorkflowExecutionInfo autoResetPoints */
                    autoResetPoints?: (temporal.api.workflow.v1.IResetPoints|null);

                    /** WorkflowExecutionInfo taskQueue */
                    taskQueue?: (string|null);

                    /** WorkflowExecutionInfo stateTransitionCount */
                    stateTransitionCount?: (Long|null);

                    /** WorkflowExecutionInfo historySizeBytes */
                    historySizeBytes?: (Long|null);

                    /**
                     * If set, the most recent worker version stamp that appeared in a workflow task completion
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    mostRecentWorkerVersionStamp?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Workflow execution duration is defined as difference between close time and execution time.
                     * This field is only populated if the workflow is closed.
                     */
                    executionDuration?: (google.protobuf.IDuration|null);

                    /**
                     * Contains information about the root workflow execution.
                     * The root workflow execution is defined as follows:
                     * 1. A workflow without parent workflow is its own root workflow.
                     * 2. A workflow that has a parent workflow has the same root workflow as its parent workflow.
                     * Note: workflows continued as new or reseted may or may not have parents, check examples below.
                     *
                     * Examples:
                     * Scenario 1: Workflow W1 starts child workflow W2, and W2 starts child workflow W3.
                     * - The root workflow of all three workflows is W1.
                     * Scenario 2: Workflow W1 starts child workflow W2, and W2 continued as new W3.
                     * - The root workflow of all three workflows is W1.
                     * Scenario 3: Workflow W1 continued as new W2.
                     * - The root workflow of W1 is W1 and the root workflow of W2 is W2.
                     * Scenario 4: Workflow W1 starts child workflow W2, and W2 is reseted, creating W3
                     * - The root workflow of all three workflows is W1.
                     * Scenario 5: Workflow W1 is reseted, creating W2.
                     * - The root workflow of W1 is W1 and the root workflow of W2 is W2.
                     */
                    rootExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * The currently assigned build ID for this execution. Presence of this value means worker versioning is used
                     * for this execution. Assigned build ID is selected based on Worker Versioning Assignment Rules
                     * when the first workflow task of the execution is scheduled. If the first workflow task fails and is scheduled
                     * again, the assigned build ID may change according to the latest versioning rules.
                     * Assigned build ID can also change in the middle of a execution if Compatible Redirect Rules are applied to
                     * this execution.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    assignedBuildId?: (string|null);

                    /**
                     * Build ID inherited from a previous/parent execution. If present, assigned_build_id will be set to this, instead
                     * of using the assignment rules.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    inheritedBuildId?: (string|null);

                    /**
                     * The first run ID in the execution chain.
                     * Executions created via the following operations are considered to be in the same chain
                     * - ContinueAsNew
                     * - Workflow Retry
                     * - Workflow Reset
                     * - Cron Schedule
                     */
                    firstRunId?: (string|null);

                    /**
                     * Absent value means the workflow execution is not versioned. When present, the execution might
                     * be versioned or unversioned, depending on `versioning_info.behavior` and `versioning_info.versioning_override`.
                     * Experimental. Versioning info is experimental and might change in the future.
                     */
                    versioningInfo?: (temporal.api.workflow.v1.IWorkflowExecutionVersioningInfo|null);

                    /**
                     * The name of Worker Deployment that completed the most recent workflow task.
                     * Experimental. Worker Deployments are experimental and might change in the future.
                     */
                    workerDeploymentName?: (string|null);

                    /** Priority metadata */
                    priority?: (temporal.api.common.v1.IPriority|null);

                    /** Total size in bytes of all external payloads referenced in workflow history. */
                    externalPayloadSizeBytes?: (Long|null);

                    /** Count of external payloads referenced in workflow history. */
                    externalPayloadCount?: (Long|null);
                }

                /**
                 * Hold basic information about a workflow execution.
                 * This structure is a part of visibility, and thus contain a limited subset of information.
                 */
                class WorkflowExecutionInfo implements IWorkflowExecutionInfo {

                    /**
                     * Constructs a new WorkflowExecutionInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IWorkflowExecutionInfo);

                    /** WorkflowExecutionInfo execution. */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** WorkflowExecutionInfo type. */
                    public type?: (temporal.api.common.v1.IWorkflowType|null);

                    /** WorkflowExecutionInfo startTime. */
                    public startTime?: (google.protobuf.ITimestamp|null);

                    /** WorkflowExecutionInfo closeTime. */
                    public closeTime?: (google.protobuf.ITimestamp|null);

                    /** WorkflowExecutionInfo status. */
                    public status: temporal.api.enums.v1.WorkflowExecutionStatus;

                    /** WorkflowExecutionInfo historyLength. */
                    public historyLength: Long;

                    /** WorkflowExecutionInfo parentNamespaceId. */
                    public parentNamespaceId: string;

                    /** WorkflowExecutionInfo parentExecution. */
                    public parentExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** WorkflowExecutionInfo executionTime. */
                    public executionTime?: (google.protobuf.ITimestamp|null);

                    /** WorkflowExecutionInfo memo. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** WorkflowExecutionInfo searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** WorkflowExecutionInfo autoResetPoints. */
                    public autoResetPoints?: (temporal.api.workflow.v1.IResetPoints|null);

                    /** WorkflowExecutionInfo taskQueue. */
                    public taskQueue: string;

                    /** WorkflowExecutionInfo stateTransitionCount. */
                    public stateTransitionCount: Long;

                    /** WorkflowExecutionInfo historySizeBytes. */
                    public historySizeBytes: Long;

                    /**
                     * If set, the most recent worker version stamp that appeared in a workflow task completion
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public mostRecentWorkerVersionStamp?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * Workflow execution duration is defined as difference between close time and execution time.
                     * This field is only populated if the workflow is closed.
                     */
                    public executionDuration?: (google.protobuf.IDuration|null);

                    /**
                     * Contains information about the root workflow execution.
                     * The root workflow execution is defined as follows:
                     * 1. A workflow without parent workflow is its own root workflow.
                     * 2. A workflow that has a parent workflow has the same root workflow as its parent workflow.
                     * Note: workflows continued as new or reseted may or may not have parents, check examples below.
                     *
                     * Examples:
                     * Scenario 1: Workflow W1 starts child workflow W2, and W2 starts child workflow W3.
                     * - The root workflow of all three workflows is W1.
                     * Scenario 2: Workflow W1 starts child workflow W2, and W2 continued as new W3.
                     * - The root workflow of all three workflows is W1.
                     * Scenario 3: Workflow W1 continued as new W2.
                     * - The root workflow of W1 is W1 and the root workflow of W2 is W2.
                     * Scenario 4: Workflow W1 starts child workflow W2, and W2 is reseted, creating W3
                     * - The root workflow of all three workflows is W1.
                     * Scenario 5: Workflow W1 is reseted, creating W2.
                     * - The root workflow of W1 is W1 and the root workflow of W2 is W2.
                     */
                    public rootExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * The currently assigned build ID for this execution. Presence of this value means worker versioning is used
                     * for this execution. Assigned build ID is selected based on Worker Versioning Assignment Rules
                     * when the first workflow task of the execution is scheduled. If the first workflow task fails and is scheduled
                     * again, the assigned build ID may change according to the latest versioning rules.
                     * Assigned build ID can also change in the middle of a execution if Compatible Redirect Rules are applied to
                     * this execution.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public assignedBuildId: string;

                    /**
                     * Build ID inherited from a previous/parent execution. If present, assigned_build_id will be set to this, instead
                     * of using the assignment rules.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public inheritedBuildId: string;

                    /**
                     * The first run ID in the execution chain.
                     * Executions created via the following operations are considered to be in the same chain
                     * - ContinueAsNew
                     * - Workflow Retry
                     * - Workflow Reset
                     * - Cron Schedule
                     */
                    public firstRunId: string;

                    /**
                     * Absent value means the workflow execution is not versioned. When present, the execution might
                     * be versioned or unversioned, depending on `versioning_info.behavior` and `versioning_info.versioning_override`.
                     * Experimental. Versioning info is experimental and might change in the future.
                     */
                    public versioningInfo?: (temporal.api.workflow.v1.IWorkflowExecutionVersioningInfo|null);

                    /**
                     * The name of Worker Deployment that completed the most recent workflow task.
                     * Experimental. Worker Deployments are experimental and might change in the future.
                     */
                    public workerDeploymentName: string;

                    /** Priority metadata */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /** Total size in bytes of all external payloads referenced in workflow history. */
                    public externalPayloadSizeBytes: Long;

                    /** Count of external payloads referenced in workflow history. */
                    public externalPayloadCount: Long;

                    /**
                     * Creates a new WorkflowExecutionInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IWorkflowExecutionInfo): temporal.api.workflow.v1.WorkflowExecutionInfo;

                    /**
                     * Encodes the specified WorkflowExecutionInfo message. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionInfo.verify|verify} messages.
                     * @param message WorkflowExecutionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IWorkflowExecutionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionInfo.verify|verify} messages.
                     * @param message WorkflowExecutionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IWorkflowExecutionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionInfo
                     * @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): temporal.api.workflow.v1.WorkflowExecutionInfo;

                    /**
                     * Decodes a WorkflowExecutionInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionInfo
                     * @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)): temporal.api.workflow.v1.WorkflowExecutionInfo;

                    /**
                     * Creates a WorkflowExecutionInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.WorkflowExecutionInfo;

                    /**
                     * Creates a plain object from a WorkflowExecutionInfo message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.WorkflowExecutionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionExtendedInfo. */
                interface IWorkflowExecutionExtendedInfo {

                    /**
                     * Workflow execution expiration time is defined as workflow start time plus expiration timeout.
                     * Workflow start time may change after workflow reset.
                     */
                    executionExpirationTime?: (google.protobuf.ITimestamp|null);

                    /** Workflow run expiration time is defined as current workflow run start time plus workflow run timeout. */
                    runExpirationTime?: (google.protobuf.ITimestamp|null);

                    /** indicates if the workflow received a cancel request */
                    cancelRequested?: (boolean|null);

                    /** Last workflow reset time. Nil if the workflow was never reset. */
                    lastResetTime?: (google.protobuf.ITimestamp|null);

                    /** Original workflow start time. */
                    originalStartTime?: (google.protobuf.ITimestamp|null);

                    /** Reset Run ID points to the new run when this execution is reset. If the execution is reset multiple times, it points to the latest run. */
                    resetRunId?: (string|null);

                    /**
                     * Request ID information (eg: history event information associated with the request ID).
                     * Note: It only contains request IDs from StartWorkflowExecution requests, including indirect
                     * calls (eg: if SignalWithStartWorkflowExecution starts a new workflow, then the request ID is
                     * used in the StartWorkflowExecution request).
                     */
                    requestIdInfos?: ({ [k: string]: temporal.api.workflow.v1.IRequestIdInfo }|null);

                    /** Information about the workflow execution pause operation. */
                    pauseInfo?: (temporal.api.workflow.v1.IWorkflowExecutionPauseInfo|null);
                }

                /** Holds all the extra information about workflow execution that is not part of Visibility. */
                class WorkflowExecutionExtendedInfo implements IWorkflowExecutionExtendedInfo {

                    /**
                     * Constructs a new WorkflowExecutionExtendedInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IWorkflowExecutionExtendedInfo);

                    /**
                     * Workflow execution expiration time is defined as workflow start time plus expiration timeout.
                     * Workflow start time may change after workflow reset.
                     */
                    public executionExpirationTime?: (google.protobuf.ITimestamp|null);

                    /** Workflow run expiration time is defined as current workflow run start time plus workflow run timeout. */
                    public runExpirationTime?: (google.protobuf.ITimestamp|null);

                    /** indicates if the workflow received a cancel request */
                    public cancelRequested: boolean;

                    /** Last workflow reset time. Nil if the workflow was never reset. */
                    public lastResetTime?: (google.protobuf.ITimestamp|null);

                    /** Original workflow start time. */
                    public originalStartTime?: (google.protobuf.ITimestamp|null);

                    /** Reset Run ID points to the new run when this execution is reset. If the execution is reset multiple times, it points to the latest run. */
                    public resetRunId: string;

                    /**
                     * Request ID information (eg: history event information associated with the request ID).
                     * Note: It only contains request IDs from StartWorkflowExecution requests, including indirect
                     * calls (eg: if SignalWithStartWorkflowExecution starts a new workflow, then the request ID is
                     * used in the StartWorkflowExecution request).
                     */
                    public requestIdInfos: { [k: string]: temporal.api.workflow.v1.IRequestIdInfo };

                    /** Information about the workflow execution pause operation. */
                    public pauseInfo?: (temporal.api.workflow.v1.IWorkflowExecutionPauseInfo|null);

                    /**
                     * Creates a new WorkflowExecutionExtendedInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionExtendedInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IWorkflowExecutionExtendedInfo): temporal.api.workflow.v1.WorkflowExecutionExtendedInfo;

                    /**
                     * Encodes the specified WorkflowExecutionExtendedInfo message. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionExtendedInfo.verify|verify} messages.
                     * @param message WorkflowExecutionExtendedInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IWorkflowExecutionExtendedInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionExtendedInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionExtendedInfo.verify|verify} messages.
                     * @param message WorkflowExecutionExtendedInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IWorkflowExecutionExtendedInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionExtendedInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionExtendedInfo
                     * @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): temporal.api.workflow.v1.WorkflowExecutionExtendedInfo;

                    /**
                     * Decodes a WorkflowExecutionExtendedInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionExtendedInfo
                     * @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)): temporal.api.workflow.v1.WorkflowExecutionExtendedInfo;

                    /**
                     * Creates a WorkflowExecutionExtendedInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionExtendedInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.WorkflowExecutionExtendedInfo;

                    /**
                     * Creates a plain object from a WorkflowExecutionExtendedInfo message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionExtendedInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.WorkflowExecutionExtendedInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionExtendedInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionExtendedInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionVersioningInfo. */
                interface IWorkflowExecutionVersioningInfo {

                    /**
                     * Versioning behavior determines how the server should treat this execution when workers are
                     * upgraded. When present it means this workflow execution is versioned; UNSPECIFIED means
                     * unversioned. See the comments in `VersioningBehavior` enum for more info about different
                     * behaviors.
                     *
                     * Child workflows or CaN executions **inherit** their parent/previous run's effective Versioning
                     * Behavior and Version (except when the new execution runs on a task queue not belonging to the
                     * same deployment version as the parent/previous run's task queue). The first workflow task will
                     * be dispatched according to the inherited behavior (or to the current version of the task-queue's
                     * deployment in the case of AutoUpgrade.) After completion of their first workflow task the
                     * Deployment Version and Behavior of the execution will update according to configuration on the worker.
                     *
                     * Note that `behavior` is overridden by `versioning_override` if the latter is present.
                     */
                    behavior?: (temporal.api.enums.v1.VersioningBehavior|null);

                    /**
                     * The worker deployment that completed the last workflow task of this workflow execution. Must
                     * be present if `behavior` is set. Absent value means no workflow task is completed, or the
                     * last workflow task was completed by an unversioned worker. Unversioned workers may still send
                     * a deployment value which will be stored here, so the right way to check if an execution is
                     * versioned if an execution is versioned or not is via the `behavior` field.
                     * Note that `deployment` is overridden by `versioning_override` if the latter is present.
                     * Deprecated. Use `deployment_version`.
                     */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Deprecated. Use `deployment_version`. */
                    version?: (string|null);

                    /**
                     * The Worker Deployment Version that completed the last workflow task of this workflow execution.
                     * An absent value means no workflow task is completed, or the workflow is unversioned.
                     * If present, and `behavior` is UNSPECIFIED, the last task of this workflow execution was completed
                     * by a worker that is not using versioning but _is_ passing Deployment Name and Build ID.
                     *
                     * Child workflows or CaN executions **inherit** their parent/previous run's effective Versioning
                     * Behavior and Version (except when the new execution runs on a task queue not belonging to the
                     * same deployment version as the parent/previous run's task queue). The first workflow task will
                     * be dispatched according to the inherited behavior (or to the current version of the task-queue's
                     * deployment in the case of AutoUpgrade.) After completion of their first workflow task the
                     * Deployment Version and Behavior of the execution will update according to configuration on the worker.
                     *
                     * Note that if `versioning_override.behavior` is PINNED then `versioning_override.pinned_version`
                     * will override this value.
                     */
                    deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * Present if user has set an execution-specific versioning override. This override takes
                     * precedence over SDK-sent `behavior` (and `version` when override is PINNED). An
                     * override can be set when starting a new execution, as well as afterwards by calling the
                     * `UpdateWorkflowExecutionOptions` API.
                     * Pinned overrides are automatically inherited by child workflows, continue-as-new workflows,
                     * workflow retries, and cron workflows.
                     */
                    versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /**
                     * When present, indicates the workflow is transitioning to a different deployment. Can
                     * indicate one of the following transitions: unversioned -> versioned, versioned -> versioned
                     * on a different deployment, or versioned -> unversioned.
                     * Not applicable to workflows with PINNED behavior.
                     * When a workflow with AUTO_UPGRADE behavior creates a new workflow task, it will automatically
                     * start a transition to the task queue's current deployment if the task queue's current
                     * deployment is different from the workflow's deployment.
                     * If the AUTO_UPGRADE workflow is stuck due to backlogged activity or workflow tasks, those
                     * tasks will be redirected to the task queue's current deployment. As soon as a poller from
                     * that deployment is available to receive the task, the workflow will automatically start a
                     * transition to that deployment and continue execution there.
                     * A deployment transition can only exist while there is a pending or started workflow task.
                     * Once the pending workflow task completes on the transition's target deployment, the
                     * transition completes and the workflow's `deployment` and `behavior` fields are updated per
                     * the worker's task completion response.
                     * Pending activities will not start new attempts during a transition. Once the transition is
                     * completed, pending activities will start their next attempt on the new deployment.
                     * Deprecated. Use version_transition.
                     */
                    deploymentTransition?: (temporal.api.workflow.v1.IDeploymentTransition|null);

                    /**
                     * When present, indicates the workflow is transitioning to a different deployment version
                     * (which may belong to the same deployment name or another). Can indicate one of the following
                     * transitions: unversioned -> versioned, versioned -> versioned
                     * on a different deployment version, or versioned -> unversioned.
                     * Not applicable to workflows with PINNED behavior.
                     * When a workflow with AUTO_UPGRADE behavior creates a new workflow task, it will automatically
                     * start a transition to the task queue's current version if the task queue's current version is
                     * different from the workflow's current deployment version.
                     * If the AUTO_UPGRADE workflow is stuck due to backlogged activity or workflow tasks, those
                     * tasks will be redirected to the task queue's current version. As soon as a poller from
                     * that deployment version is available to receive the task, the workflow will automatically
                     * start a transition to that version and continue execution there.
                     * A version transition can only exist while there is a pending or started workflow task.
                     * Once the pending workflow task completes on the transition's target version, the
                     * transition completes and the workflow's `behavior`, and `deployment_version` fields are updated per the
                     * worker's task completion response.
                     * Pending activities will not start new attempts during a transition. Once the transition is
                     * completed, pending activities will start their next attempt on the new version.
                     */
                    versionTransition?: (temporal.api.workflow.v1.IDeploymentVersionTransition|null);

                    /**
                     * Monotonic counter reflecting the latest routing decision for this workflow execution.
                     * Used for staleness detection between history and matching when dispatching tasks to workers.
                     * Incremented when a workflow execution routes to a new deployment version, which happens
                     * when a worker of the new deployment version completes a workflow task.
                     * Note: Pinned tasks and sticky tasks send a value of 0 for this field since these tasks do not
                     * face the problem of inconsistent dispatching that arises from eventual consistency between
                     * task queues and their partitions.
                     */
                    revisionNumber?: (Long|null);
                }

                /**
                 * Holds all the information about worker versioning for a particular workflow execution.
                 * Experimental. Versioning info is experimental and might change in the future.
                 */
                class WorkflowExecutionVersioningInfo implements IWorkflowExecutionVersioningInfo {

                    /**
                     * Constructs a new WorkflowExecutionVersioningInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IWorkflowExecutionVersioningInfo);

                    /**
                     * Versioning behavior determines how the server should treat this execution when workers are
                     * upgraded. When present it means this workflow execution is versioned; UNSPECIFIED means
                     * unversioned. See the comments in `VersioningBehavior` enum for more info about different
                     * behaviors.
                     *
                     * Child workflows or CaN executions **inherit** their parent/previous run's effective Versioning
                     * Behavior and Version (except when the new execution runs on a task queue not belonging to the
                     * same deployment version as the parent/previous run's task queue). The first workflow task will
                     * be dispatched according to the inherited behavior (or to the current version of the task-queue's
                     * deployment in the case of AutoUpgrade.) After completion of their first workflow task the
                     * Deployment Version and Behavior of the execution will update according to configuration on the worker.
                     *
                     * Note that `behavior` is overridden by `versioning_override` if the latter is present.
                     */
                    public behavior: temporal.api.enums.v1.VersioningBehavior;

                    /**
                     * The worker deployment that completed the last workflow task of this workflow execution. Must
                     * be present if `behavior` is set. Absent value means no workflow task is completed, or the
                     * last workflow task was completed by an unversioned worker. Unversioned workers may still send
                     * a deployment value which will be stored here, so the right way to check if an execution is
                     * versioned if an execution is versioned or not is via the `behavior` field.
                     * Note that `deployment` is overridden by `versioning_override` if the latter is present.
                     * Deprecated. Use `deployment_version`.
                     */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /** Deprecated. Use `deployment_version`. */
                    public version: string;

                    /**
                     * The Worker Deployment Version that completed the last workflow task of this workflow execution.
                     * An absent value means no workflow task is completed, or the workflow is unversioned.
                     * If present, and `behavior` is UNSPECIFIED, the last task of this workflow execution was completed
                     * by a worker that is not using versioning but _is_ passing Deployment Name and Build ID.
                     *
                     * Child workflows or CaN executions **inherit** their parent/previous run's effective Versioning
                     * Behavior and Version (except when the new execution runs on a task queue not belonging to the
                     * same deployment version as the parent/previous run's task queue). The first workflow task will
                     * be dispatched according to the inherited behavior (or to the current version of the task-queue's
                     * deployment in the case of AutoUpgrade.) After completion of their first workflow task the
                     * Deployment Version and Behavior of the execution will update according to configuration on the worker.
                     *
                     * Note that if `versioning_override.behavior` is PINNED then `versioning_override.pinned_version`
                     * will override this value.
                     */
                    public deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * Present if user has set an execution-specific versioning override. This override takes
                     * precedence over SDK-sent `behavior` (and `version` when override is PINNED). An
                     * override can be set when starting a new execution, as well as afterwards by calling the
                     * `UpdateWorkflowExecutionOptions` API.
                     * Pinned overrides are automatically inherited by child workflows, continue-as-new workflows,
                     * workflow retries, and cron workflows.
                     */
                    public versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /**
                     * When present, indicates the workflow is transitioning to a different deployment. Can
                     * indicate one of the following transitions: unversioned -> versioned, versioned -> versioned
                     * on a different deployment, or versioned -> unversioned.
                     * Not applicable to workflows with PINNED behavior.
                     * When a workflow with AUTO_UPGRADE behavior creates a new workflow task, it will automatically
                     * start a transition to the task queue's current deployment if the task queue's current
                     * deployment is different from the workflow's deployment.
                     * If the AUTO_UPGRADE workflow is stuck due to backlogged activity or workflow tasks, those
                     * tasks will be redirected to the task queue's current deployment. As soon as a poller from
                     * that deployment is available to receive the task, the workflow will automatically start a
                     * transition to that deployment and continue execution there.
                     * A deployment transition can only exist while there is a pending or started workflow task.
                     * Once the pending workflow task completes on the transition's target deployment, the
                     * transition completes and the workflow's `deployment` and `behavior` fields are updated per
                     * the worker's task completion response.
                     * Pending activities will not start new attempts during a transition. Once the transition is
                     * completed, pending activities will start their next attempt on the new deployment.
                     * Deprecated. Use version_transition.
                     */
                    public deploymentTransition?: (temporal.api.workflow.v1.IDeploymentTransition|null);

                    /**
                     * When present, indicates the workflow is transitioning to a different deployment version
                     * (which may belong to the same deployment name or another). Can indicate one of the following
                     * transitions: unversioned -> versioned, versioned -> versioned
                     * on a different deployment version, or versioned -> unversioned.
                     * Not applicable to workflows with PINNED behavior.
                     * When a workflow with AUTO_UPGRADE behavior creates a new workflow task, it will automatically
                     * start a transition to the task queue's current version if the task queue's current version is
                     * different from the workflow's current deployment version.
                     * If the AUTO_UPGRADE workflow is stuck due to backlogged activity or workflow tasks, those
                     * tasks will be redirected to the task queue's current version. As soon as a poller from
                     * that deployment version is available to receive the task, the workflow will automatically
                     * start a transition to that version and continue execution there.
                     * A version transition can only exist while there is a pending or started workflow task.
                     * Once the pending workflow task completes on the transition's target version, the
                     * transition completes and the workflow's `behavior`, and `deployment_version` fields are updated per the
                     * worker's task completion response.
                     * Pending activities will not start new attempts during a transition. Once the transition is
                     * completed, pending activities will start their next attempt on the new version.
                     */
                    public versionTransition?: (temporal.api.workflow.v1.IDeploymentVersionTransition|null);

                    /**
                     * Monotonic counter reflecting the latest routing decision for this workflow execution.
                     * Used for staleness detection between history and matching when dispatching tasks to workers.
                     * Incremented when a workflow execution routes to a new deployment version, which happens
                     * when a worker of the new deployment version completes a workflow task.
                     * Note: Pinned tasks and sticky tasks send a value of 0 for this field since these tasks do not
                     * face the problem of inconsistent dispatching that arises from eventual consistency between
                     * task queues and their partitions.
                     */
                    public revisionNumber: Long;

                    /**
                     * Creates a new WorkflowExecutionVersioningInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionVersioningInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IWorkflowExecutionVersioningInfo): temporal.api.workflow.v1.WorkflowExecutionVersioningInfo;

                    /**
                     * Encodes the specified WorkflowExecutionVersioningInfo message. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionVersioningInfo.verify|verify} messages.
                     * @param message WorkflowExecutionVersioningInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IWorkflowExecutionVersioningInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionVersioningInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionVersioningInfo.verify|verify} messages.
                     * @param message WorkflowExecutionVersioningInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IWorkflowExecutionVersioningInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionVersioningInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionVersioningInfo
                     * @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): temporal.api.workflow.v1.WorkflowExecutionVersioningInfo;

                    /**
                     * Decodes a WorkflowExecutionVersioningInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionVersioningInfo
                     * @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)): temporal.api.workflow.v1.WorkflowExecutionVersioningInfo;

                    /**
                     * Creates a WorkflowExecutionVersioningInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionVersioningInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.WorkflowExecutionVersioningInfo;

                    /**
                     * Creates a plain object from a WorkflowExecutionVersioningInfo message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionVersioningInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.WorkflowExecutionVersioningInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionVersioningInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionVersioningInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeploymentTransition. */
                interface IDeploymentTransition {

                    /**
                     * The target deployment of the transition. Null means a so-far-versioned workflow is
                     * transitioning to unversioned workers.
                     */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);
                }

                /**
                 * Holds information about ongoing transition of a workflow execution from one deployment to another.
                 * Deprecated. Use DeploymentVersionTransition.
                 */
                class DeploymentTransition implements IDeploymentTransition {

                    /**
                     * Constructs a new DeploymentTransition.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IDeploymentTransition);

                    /**
                     * The target deployment of the transition. Null means a so-far-versioned workflow is
                     * transitioning to unversioned workers.
                     */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /**
                     * Creates a new DeploymentTransition instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeploymentTransition instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IDeploymentTransition): temporal.api.workflow.v1.DeploymentTransition;

                    /**
                     * Encodes the specified DeploymentTransition message. Does not implicitly {@link temporal.api.workflow.v1.DeploymentTransition.verify|verify} messages.
                     * @param message DeploymentTransition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IDeploymentTransition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeploymentTransition message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.DeploymentTransition.verify|verify} messages.
                     * @param message DeploymentTransition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IDeploymentTransition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeploymentTransition message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeploymentTransition
                     * @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): temporal.api.workflow.v1.DeploymentTransition;

                    /**
                     * Decodes a DeploymentTransition message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeploymentTransition
                     * @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)): temporal.api.workflow.v1.DeploymentTransition;

                    /**
                     * Creates a DeploymentTransition message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeploymentTransition
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.DeploymentTransition;

                    /**
                     * Creates a plain object from a DeploymentTransition message. Also converts values to other types if specified.
                     * @param message DeploymentTransition
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.DeploymentTransition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeploymentTransition to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeploymentTransition
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeploymentVersionTransition. */
                interface IDeploymentVersionTransition {

                    /** Deprecated. Use `deployment_version`. */
                    version?: (string|null);

                    /**
                     * The target Version of the transition.
                     * If nil, a so-far-versioned workflow is transitioning to unversioned workers.
                     */
                    deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);
                }

                /**
                 * Holds information about ongoing transition of a workflow execution from one worker
                 * deployment version to another.
                 * Experimental. Might change in the future.
                 */
                class DeploymentVersionTransition implements IDeploymentVersionTransition {

                    /**
                     * Constructs a new DeploymentVersionTransition.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IDeploymentVersionTransition);

                    /** Deprecated. Use `deployment_version`. */
                    public version: string;

                    /**
                     * The target Version of the transition.
                     * If nil, a so-far-versioned workflow is transitioning to unversioned workers.
                     */
                    public deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * Creates a new DeploymentVersionTransition instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeploymentVersionTransition instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IDeploymentVersionTransition): temporal.api.workflow.v1.DeploymentVersionTransition;

                    /**
                     * Encodes the specified DeploymentVersionTransition message. Does not implicitly {@link temporal.api.workflow.v1.DeploymentVersionTransition.verify|verify} messages.
                     * @param message DeploymentVersionTransition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IDeploymentVersionTransition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeploymentVersionTransition message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.DeploymentVersionTransition.verify|verify} messages.
                     * @param message DeploymentVersionTransition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IDeploymentVersionTransition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeploymentVersionTransition message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeploymentVersionTransition
                     * @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): temporal.api.workflow.v1.DeploymentVersionTransition;

                    /**
                     * Decodes a DeploymentVersionTransition message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeploymentVersionTransition
                     * @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)): temporal.api.workflow.v1.DeploymentVersionTransition;

                    /**
                     * Creates a DeploymentVersionTransition message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeploymentVersionTransition
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.DeploymentVersionTransition;

                    /**
                     * Creates a plain object from a DeploymentVersionTransition message. Also converts values to other types if specified.
                     * @param message DeploymentVersionTransition
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.DeploymentVersionTransition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeploymentVersionTransition to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeploymentVersionTransition
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionConfig. */
                interface IWorkflowExecutionConfig {

                    /** WorkflowExecutionConfig taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** WorkflowExecutionConfig workflowExecutionTimeout */
                    workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** WorkflowExecutionConfig workflowRunTimeout */
                    workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** WorkflowExecutionConfig defaultWorkflowTaskTimeout */
                    defaultWorkflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** User metadata provided on start workflow. */
                    userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);
                }

                /** Represents a WorkflowExecutionConfig. */
                class WorkflowExecutionConfig implements IWorkflowExecutionConfig {

                    /**
                     * Constructs a new WorkflowExecutionConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IWorkflowExecutionConfig);

                    /** WorkflowExecutionConfig taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** WorkflowExecutionConfig workflowExecutionTimeout. */
                    public workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** WorkflowExecutionConfig workflowRunTimeout. */
                    public workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** WorkflowExecutionConfig defaultWorkflowTaskTimeout. */
                    public defaultWorkflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** User metadata provided on start workflow. */
                    public userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /**
                     * Creates a new WorkflowExecutionConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionConfig instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IWorkflowExecutionConfig): temporal.api.workflow.v1.WorkflowExecutionConfig;

                    /**
                     * Encodes the specified WorkflowExecutionConfig message. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionConfig.verify|verify} messages.
                     * @param message WorkflowExecutionConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IWorkflowExecutionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionConfig message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionConfig.verify|verify} messages.
                     * @param message WorkflowExecutionConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IWorkflowExecutionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionConfig
                     * @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): temporal.api.workflow.v1.WorkflowExecutionConfig;

                    /**
                     * Decodes a WorkflowExecutionConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionConfig
                     * @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)): temporal.api.workflow.v1.WorkflowExecutionConfig;

                    /**
                     * Creates a WorkflowExecutionConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionConfig
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.WorkflowExecutionConfig;

                    /**
                     * Creates a plain object from a WorkflowExecutionConfig message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.WorkflowExecutionConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PendingActivityInfo. */
                interface IPendingActivityInfo {

                    /** PendingActivityInfo activityId */
                    activityId?: (string|null);

                    /** PendingActivityInfo activityType */
                    activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** PendingActivityInfo state */
                    state?: (temporal.api.enums.v1.PendingActivityState|null);

                    /** PendingActivityInfo heartbeatDetails */
                    heartbeatDetails?: (temporal.api.common.v1.IPayloads|null);

                    /** PendingActivityInfo lastHeartbeatTime */
                    lastHeartbeatTime?: (google.protobuf.ITimestamp|null);

                    /** PendingActivityInfo lastStartedTime */
                    lastStartedTime?: (google.protobuf.ITimestamp|null);

                    /** PendingActivityInfo attempt */
                    attempt?: (number|null);

                    /** PendingActivityInfo maximumAttempts */
                    maximumAttempts?: (number|null);

                    /** PendingActivityInfo scheduledTime */
                    scheduledTime?: (google.protobuf.ITimestamp|null);

                    /** PendingActivityInfo expirationTime */
                    expirationTime?: (google.protobuf.ITimestamp|null);

                    /** PendingActivityInfo lastFailure */
                    lastFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** PendingActivityInfo lastWorkerIdentity */
                    lastWorkerIdentity?: (string|null);

                    /** Deprecated. When present, it means this activity is assigned to the build ID of its workflow. */
                    useWorkflowBuildId?: (google.protobuf.IEmpty|null);

                    /**
                     * Deprecated. This means the activity is independently versioned and not bound to the build ID of its workflow.
                     * The activity will use the build id in this field instead.
                     * If the task fails and is scheduled again, the assigned build ID may change according to the latest versioning
                     * rules.
                     */
                    lastIndependentlyAssignedBuildId?: (string|null);

                    /**
                     * Deprecated. The version stamp of the worker to whom this activity was most recently dispatched
                     * This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    lastWorkerVersionStamp?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * The time activity will wait until the next retry.
                     * If activity is currently running it will be next retry interval if activity failed.
                     * If activity is currently waiting it will be current retry interval.
                     * If there will be no retry it will be null.
                     */
                    currentRetryInterval?: (google.protobuf.IDuration|null);

                    /** The time when the last activity attempt was completed. If activity has not been completed yet then it will be null. */
                    lastAttemptCompleteTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Next time when activity will be scheduled.
                     * If activity is currently scheduled or started it will be null.
                     */
                    nextAttemptScheduleTime?: (google.protobuf.ITimestamp|null);

                    /** Indicates if activity is paused. */
                    paused?: (boolean|null);

                    /**
                     * The deployment this activity was dispatched to most recently. Present only if the activity
                     * was dispatched to a versioned worker.
                     * Deprecated. Use `last_deployment_version`.
                     */
                    lastDeployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /**
                     * The Worker Deployment Version this activity was dispatched to most recently.
                     * Deprecated. Use `last_deployment_version`.
                     */
                    lastWorkerDeploymentVersion?: (string|null);

                    /**
                     * The Worker Deployment Version this activity was dispatched to most recently.
                     * If nil, the activity has not yet been dispatched or was last dispatched to an unversioned worker.
                     */
                    lastDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * Priority metadata. If this message is not present, or any fields are not
                     * present, they inherit the values from the workflow.
                     */
                    priority?: (temporal.api.common.v1.IPriority|null);

                    /** PendingActivityInfo pauseInfo */
                    pauseInfo?: (temporal.api.workflow.v1.PendingActivityInfo.IPauseInfo|null);

                    /** Current activity options. May be different from the one used to start the activity. */
                    activityOptions?: (temporal.api.activity.v1.IActivityOptions|null);
                }

                /** Represents a PendingActivityInfo. */
                class PendingActivityInfo implements IPendingActivityInfo {

                    /**
                     * Constructs a new PendingActivityInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IPendingActivityInfo);

                    /** PendingActivityInfo activityId. */
                    public activityId: string;

                    /** PendingActivityInfo activityType. */
                    public activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** PendingActivityInfo state. */
                    public state: temporal.api.enums.v1.PendingActivityState;

                    /** PendingActivityInfo heartbeatDetails. */
                    public heartbeatDetails?: (temporal.api.common.v1.IPayloads|null);

                    /** PendingActivityInfo lastHeartbeatTime. */
                    public lastHeartbeatTime?: (google.protobuf.ITimestamp|null);

                    /** PendingActivityInfo lastStartedTime. */
                    public lastStartedTime?: (google.protobuf.ITimestamp|null);

                    /** PendingActivityInfo attempt. */
                    public attempt: number;

                    /** PendingActivityInfo maximumAttempts. */
                    public maximumAttempts: number;

                    /** PendingActivityInfo scheduledTime. */
                    public scheduledTime?: (google.protobuf.ITimestamp|null);

                    /** PendingActivityInfo expirationTime. */
                    public expirationTime?: (google.protobuf.ITimestamp|null);

                    /** PendingActivityInfo lastFailure. */
                    public lastFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** PendingActivityInfo lastWorkerIdentity. */
                    public lastWorkerIdentity: string;

                    /** Deprecated. When present, it means this activity is assigned to the build ID of its workflow. */
                    public useWorkflowBuildId?: (google.protobuf.IEmpty|null);

                    /**
                     * Deprecated. This means the activity is independently versioned and not bound to the build ID of its workflow.
                     * The activity will use the build id in this field instead.
                     * If the task fails and is scheduled again, the assigned build ID may change according to the latest versioning
                     * rules.
                     */
                    public lastIndependentlyAssignedBuildId?: (string|null);

                    /**
                     * Deprecated. The version stamp of the worker to whom this activity was most recently dispatched
                     * This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public lastWorkerVersionStamp?: (temporal.api.common.v1.IWorkerVersionStamp|null);

                    /**
                     * The time activity will wait until the next retry.
                     * If activity is currently running it will be next retry interval if activity failed.
                     * If activity is currently waiting it will be current retry interval.
                     * If there will be no retry it will be null.
                     */
                    public currentRetryInterval?: (google.protobuf.IDuration|null);

                    /** The time when the last activity attempt was completed. If activity has not been completed yet then it will be null. */
                    public lastAttemptCompleteTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Next time when activity will be scheduled.
                     * If activity is currently scheduled or started it will be null.
                     */
                    public nextAttemptScheduleTime?: (google.protobuf.ITimestamp|null);

                    /** Indicates if activity is paused. */
                    public paused: boolean;

                    /**
                     * The deployment this activity was dispatched to most recently. Present only if the activity
                     * was dispatched to a versioned worker.
                     * Deprecated. Use `last_deployment_version`.
                     */
                    public lastDeployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /**
                     * The Worker Deployment Version this activity was dispatched to most recently.
                     * Deprecated. Use `last_deployment_version`.
                     */
                    public lastWorkerDeploymentVersion: string;

                    /**
                     * The Worker Deployment Version this activity was dispatched to most recently.
                     * If nil, the activity has not yet been dispatched or was last dispatched to an unversioned worker.
                     */
                    public lastDeploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /**
                     * Priority metadata. If this message is not present, or any fields are not
                     * present, they inherit the values from the workflow.
                     */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /** PendingActivityInfo pauseInfo. */
                    public pauseInfo?: (temporal.api.workflow.v1.PendingActivityInfo.IPauseInfo|null);

                    /** Current activity options. May be different from the one used to start the activity. */
                    public activityOptions?: (temporal.api.activity.v1.IActivityOptions|null);

                    /**
                     * Absence of `assigned_build_id` generally means this task is on an "unversioned" task queue.
                     * In rare cases, it can also mean that the task queue is versioned but we failed to write activity's
                     * independently-assigned build ID to the database. This case heals automatically once the task is dispatched.
                     * Deprecated. This field should be cleaned up when versioning-2 API is removed. [cleanup-experimental-wv]
                     */
                    public assignedBuildId?: ("useWorkflowBuildId"|"lastIndependentlyAssignedBuildId");

                    /**
                     * Creates a new PendingActivityInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PendingActivityInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IPendingActivityInfo): temporal.api.workflow.v1.PendingActivityInfo;

                    /**
                     * Encodes the specified PendingActivityInfo message. Does not implicitly {@link temporal.api.workflow.v1.PendingActivityInfo.verify|verify} messages.
                     * @param message PendingActivityInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IPendingActivityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PendingActivityInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.PendingActivityInfo.verify|verify} messages.
                     * @param message PendingActivityInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IPendingActivityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PendingActivityInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PendingActivityInfo
                     * @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): temporal.api.workflow.v1.PendingActivityInfo;

                    /**
                     * Decodes a PendingActivityInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PendingActivityInfo
                     * @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)): temporal.api.workflow.v1.PendingActivityInfo;

                    /**
                     * Creates a PendingActivityInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PendingActivityInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.PendingActivityInfo;

                    /**
                     * Creates a plain object from a PendingActivityInfo message. Also converts values to other types if specified.
                     * @param message PendingActivityInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.PendingActivityInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PendingActivityInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PendingActivityInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PendingActivityInfo {

                    /** Properties of a PauseInfo. */
                    interface IPauseInfo {

                        /** The time when the activity was paused. */
                        pauseTime?: (google.protobuf.ITimestamp|null);

                        /** activity was paused by the manual intervention */
                        manual?: (temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IManual|null);

                        /** activity was paused by the rule */
                        rule?: (temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IRule|null);
                    }

                    /** Represents a PauseInfo. */
                    class PauseInfo implements IPauseInfo {

                        /**
                         * Constructs a new PauseInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflow.v1.PendingActivityInfo.IPauseInfo);

                        /** The time when the activity was paused. */
                        public pauseTime?: (google.protobuf.ITimestamp|null);

                        /** activity was paused by the manual intervention */
                        public manual?: (temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IManual|null);

                        /** activity was paused by the rule */
                        public rule?: (temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IRule|null);

                        /** PauseInfo pausedBy. */
                        public pausedBy?: ("manual"|"rule");

                        /**
                         * Creates a new PauseInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PauseInfo instance
                         */
                        public static create(properties?: temporal.api.workflow.v1.PendingActivityInfo.IPauseInfo): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo;

                        /**
                         * Encodes the specified PauseInfo message. Does not implicitly {@link temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.verify|verify} messages.
                         * @param message PauseInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflow.v1.PendingActivityInfo.IPauseInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PauseInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.verify|verify} messages.
                         * @param message PauseInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflow.v1.PendingActivityInfo.IPauseInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PauseInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PauseInfo
                         * @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): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo;

                        /**
                         * Decodes a PauseInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PauseInfo
                         * @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)): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo;

                        /**
                         * Creates a PauseInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PauseInfo
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo;

                        /**
                         * Creates a plain object from a PauseInfo message. Also converts values to other types if specified.
                         * @param message PauseInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflow.v1.PendingActivityInfo.PauseInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PauseInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PauseInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PauseInfo {

                        /** Properties of a Manual. */
                        interface IManual {

                            /** The identity of the actor that paused the activity. */
                            identity?: (string|null);

                            /** Reason for pausing the activity. */
                            reason?: (string|null);
                        }

                        /** Represents a Manual. */
                        class Manual implements IManual {

                            /**
                             * Constructs a new Manual.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IManual);

                            /** The identity of the actor that paused the activity. */
                            public identity: string;

                            /** Reason for pausing the activity. */
                            public reason: string;

                            /**
                             * Creates a new Manual instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Manual instance
                             */
                            public static create(properties?: temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IManual): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Manual;

                            /**
                             * Encodes the specified Manual message. Does not implicitly {@link temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Manual.verify|verify} messages.
                             * @param message Manual message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IManual, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Manual message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Manual.verify|verify} messages.
                             * @param message Manual message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IManual, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Manual message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Manual
                             * @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): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Manual;

                            /**
                             * Decodes a Manual message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Manual
                             * @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)): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Manual;

                            /**
                             * Creates a Manual message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Manual
                             */
                            public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Manual;

                            /**
                             * Creates a plain object from a Manual message. Also converts values to other types if specified.
                             * @param message Manual
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Manual, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Manual to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Manual
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a Rule. */
                        interface IRule {

                            /** The rule that paused the activity. */
                            ruleId?: (string|null);

                            /** The identity of the actor that created the rule. */
                            identity?: (string|null);

                            /** Reason why rule was created. Populated from rule description. */
                            reason?: (string|null);
                        }

                        /** Represents a Rule. */
                        class Rule implements IRule {

                            /**
                             * Constructs a new Rule.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IRule);

                            /** The rule that paused the activity. */
                            public ruleId: string;

                            /** The identity of the actor that created the rule. */
                            public identity: string;

                            /** Reason why rule was created. Populated from rule description. */
                            public reason: string;

                            /**
                             * Creates a new Rule instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Rule instance
                             */
                            public static create(properties?: temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IRule): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Rule;

                            /**
                             * Encodes the specified Rule message. Does not implicitly {@link temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Rule.verify|verify} messages.
                             * @param message Rule message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IRule, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Rule message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Rule.verify|verify} messages.
                             * @param message Rule message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.IRule, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Rule message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Rule
                             * @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): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Rule;

                            /**
                             * Decodes a Rule message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Rule
                             * @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)): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Rule;

                            /**
                             * Creates a Rule message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Rule
                             */
                            public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Rule;

                            /**
                             * Creates a plain object from a Rule message. Also converts values to other types if specified.
                             * @param message Rule
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: temporal.api.workflow.v1.PendingActivityInfo.PauseInfo.Rule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Rule to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Rule
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }
                }

                /** Properties of a PendingChildExecutionInfo. */
                interface IPendingChildExecutionInfo {

                    /** PendingChildExecutionInfo workflowId */
                    workflowId?: (string|null);

                    /** PendingChildExecutionInfo runId */
                    runId?: (string|null);

                    /** PendingChildExecutionInfo workflowTypeName */
                    workflowTypeName?: (string|null);

                    /** PendingChildExecutionInfo initiatedId */
                    initiatedId?: (Long|null);

                    /** Default: PARENT_CLOSE_POLICY_TERMINATE. */
                    parentClosePolicy?: (temporal.api.enums.v1.ParentClosePolicy|null);
                }

                /** Represents a PendingChildExecutionInfo. */
                class PendingChildExecutionInfo implements IPendingChildExecutionInfo {

                    /**
                     * Constructs a new PendingChildExecutionInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IPendingChildExecutionInfo);

                    /** PendingChildExecutionInfo workflowId. */
                    public workflowId: string;

                    /** PendingChildExecutionInfo runId. */
                    public runId: string;

                    /** PendingChildExecutionInfo workflowTypeName. */
                    public workflowTypeName: string;

                    /** PendingChildExecutionInfo initiatedId. */
                    public initiatedId: Long;

                    /** Default: PARENT_CLOSE_POLICY_TERMINATE. */
                    public parentClosePolicy: temporal.api.enums.v1.ParentClosePolicy;

                    /**
                     * Creates a new PendingChildExecutionInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PendingChildExecutionInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IPendingChildExecutionInfo): temporal.api.workflow.v1.PendingChildExecutionInfo;

                    /**
                     * Encodes the specified PendingChildExecutionInfo message. Does not implicitly {@link temporal.api.workflow.v1.PendingChildExecutionInfo.verify|verify} messages.
                     * @param message PendingChildExecutionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IPendingChildExecutionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PendingChildExecutionInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.PendingChildExecutionInfo.verify|verify} messages.
                     * @param message PendingChildExecutionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IPendingChildExecutionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PendingChildExecutionInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PendingChildExecutionInfo
                     * @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): temporal.api.workflow.v1.PendingChildExecutionInfo;

                    /**
                     * Decodes a PendingChildExecutionInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PendingChildExecutionInfo
                     * @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)): temporal.api.workflow.v1.PendingChildExecutionInfo;

                    /**
                     * Creates a PendingChildExecutionInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PendingChildExecutionInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.PendingChildExecutionInfo;

                    /**
                     * Creates a plain object from a PendingChildExecutionInfo message. Also converts values to other types if specified.
                     * @param message PendingChildExecutionInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.PendingChildExecutionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PendingChildExecutionInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PendingChildExecutionInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PendingWorkflowTaskInfo. */
                interface IPendingWorkflowTaskInfo {

                    /** PendingWorkflowTaskInfo state */
                    state?: (temporal.api.enums.v1.PendingWorkflowTaskState|null);

                    /** PendingWorkflowTaskInfo scheduledTime */
                    scheduledTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * original_scheduled_time is the scheduled time of the first workflow task during workflow task heartbeat.
                     * Heartbeat workflow task is done by RespondWorkflowTaskComplete with ForceCreateNewWorkflowTask == true and no command
                     * In this case, OriginalScheduledTime won't change. Then when current time - original_scheduled_time exceeds
                     * some threshold, the workflow task will be forced timeout.
                     */
                    originalScheduledTime?: (google.protobuf.ITimestamp|null);

                    /** PendingWorkflowTaskInfo startedTime */
                    startedTime?: (google.protobuf.ITimestamp|null);

                    /** PendingWorkflowTaskInfo attempt */
                    attempt?: (number|null);
                }

                /** Represents a PendingWorkflowTaskInfo. */
                class PendingWorkflowTaskInfo implements IPendingWorkflowTaskInfo {

                    /**
                     * Constructs a new PendingWorkflowTaskInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IPendingWorkflowTaskInfo);

                    /** PendingWorkflowTaskInfo state. */
                    public state: temporal.api.enums.v1.PendingWorkflowTaskState;

                    /** PendingWorkflowTaskInfo scheduledTime. */
                    public scheduledTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * original_scheduled_time is the scheduled time of the first workflow task during workflow task heartbeat.
                     * Heartbeat workflow task is done by RespondWorkflowTaskComplete with ForceCreateNewWorkflowTask == true and no command
                     * In this case, OriginalScheduledTime won't change. Then when current time - original_scheduled_time exceeds
                     * some threshold, the workflow task will be forced timeout.
                     */
                    public originalScheduledTime?: (google.protobuf.ITimestamp|null);

                    /** PendingWorkflowTaskInfo startedTime. */
                    public startedTime?: (google.protobuf.ITimestamp|null);

                    /** PendingWorkflowTaskInfo attempt. */
                    public attempt: number;

                    /**
                     * Creates a new PendingWorkflowTaskInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PendingWorkflowTaskInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IPendingWorkflowTaskInfo): temporal.api.workflow.v1.PendingWorkflowTaskInfo;

                    /**
                     * Encodes the specified PendingWorkflowTaskInfo message. Does not implicitly {@link temporal.api.workflow.v1.PendingWorkflowTaskInfo.verify|verify} messages.
                     * @param message PendingWorkflowTaskInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IPendingWorkflowTaskInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PendingWorkflowTaskInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.PendingWorkflowTaskInfo.verify|verify} messages.
                     * @param message PendingWorkflowTaskInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IPendingWorkflowTaskInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PendingWorkflowTaskInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PendingWorkflowTaskInfo
                     * @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): temporal.api.workflow.v1.PendingWorkflowTaskInfo;

                    /**
                     * Decodes a PendingWorkflowTaskInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PendingWorkflowTaskInfo
                     * @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)): temporal.api.workflow.v1.PendingWorkflowTaskInfo;

                    /**
                     * Creates a PendingWorkflowTaskInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PendingWorkflowTaskInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.PendingWorkflowTaskInfo;

                    /**
                     * Creates a plain object from a PendingWorkflowTaskInfo message. Also converts values to other types if specified.
                     * @param message PendingWorkflowTaskInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.PendingWorkflowTaskInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PendingWorkflowTaskInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PendingWorkflowTaskInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResetPoints. */
                interface IResetPoints {

                    /** ResetPoints points */
                    points?: (temporal.api.workflow.v1.IResetPointInfo[]|null);
                }

                /** Represents a ResetPoints. */
                class ResetPoints implements IResetPoints {

                    /**
                     * Constructs a new ResetPoints.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IResetPoints);

                    /** ResetPoints points. */
                    public points: temporal.api.workflow.v1.IResetPointInfo[];

                    /**
                     * Creates a new ResetPoints instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResetPoints instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IResetPoints): temporal.api.workflow.v1.ResetPoints;

                    /**
                     * Encodes the specified ResetPoints message. Does not implicitly {@link temporal.api.workflow.v1.ResetPoints.verify|verify} messages.
                     * @param message ResetPoints message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IResetPoints, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResetPoints message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.ResetPoints.verify|verify} messages.
                     * @param message ResetPoints message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IResetPoints, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResetPoints message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResetPoints
                     * @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): temporal.api.workflow.v1.ResetPoints;

                    /**
                     * Decodes a ResetPoints message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResetPoints
                     * @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)): temporal.api.workflow.v1.ResetPoints;

                    /**
                     * Creates a ResetPoints message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResetPoints
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.ResetPoints;

                    /**
                     * Creates a plain object from a ResetPoints message. Also converts values to other types if specified.
                     * @param message ResetPoints
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.ResetPoints, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResetPoints to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResetPoints
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResetPointInfo. */
                interface IResetPointInfo {

                    /** Worker build id. */
                    buildId?: (string|null);

                    /** Deprecated. A worker binary version identifier. */
                    binaryChecksum?: (string|null);

                    /** The first run ID in the execution chain that was touched by this worker build. */
                    runId?: (string|null);

                    /** Event ID of the first WorkflowTaskCompleted event processed by this worker build. */
                    firstWorkflowTaskCompletedId?: (Long|null);

                    /** ResetPointInfo createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * (-- api-linter: core::0214::resource-expiry=disabled
                     * aip.dev/not-precedent: TTL is not defined for ResetPointInfo. --)
                     * The time that the run is deleted due to retention.
                     */
                    expireTime?: (google.protobuf.ITimestamp|null);

                    /** false if the reset point has pending childWFs/reqCancels/signalExternals. */
                    resettable?: (boolean|null);
                }

                /**
                 * ResetPointInfo records the workflow event id that is the first one processed by a given
                 * build id or binary checksum. A new reset point will be created if either build id or binary
                 * checksum changes (although in general only one or the other will be used at a time).
                 */
                class ResetPointInfo implements IResetPointInfo {

                    /**
                     * Constructs a new ResetPointInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IResetPointInfo);

                    /** Worker build id. */
                    public buildId: string;

                    /** Deprecated. A worker binary version identifier. */
                    public binaryChecksum: string;

                    /** The first run ID in the execution chain that was touched by this worker build. */
                    public runId: string;

                    /** Event ID of the first WorkflowTaskCompleted event processed by this worker build. */
                    public firstWorkflowTaskCompletedId: Long;

                    /** ResetPointInfo createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * (-- api-linter: core::0214::resource-expiry=disabled
                     * aip.dev/not-precedent: TTL is not defined for ResetPointInfo. --)
                     * The time that the run is deleted due to retention.
                     */
                    public expireTime?: (google.protobuf.ITimestamp|null);

                    /** false if the reset point has pending childWFs/reqCancels/signalExternals. */
                    public resettable: boolean;

                    /**
                     * Creates a new ResetPointInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResetPointInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IResetPointInfo): temporal.api.workflow.v1.ResetPointInfo;

                    /**
                     * Encodes the specified ResetPointInfo message. Does not implicitly {@link temporal.api.workflow.v1.ResetPointInfo.verify|verify} messages.
                     * @param message ResetPointInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IResetPointInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResetPointInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.ResetPointInfo.verify|verify} messages.
                     * @param message ResetPointInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IResetPointInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResetPointInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResetPointInfo
                     * @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): temporal.api.workflow.v1.ResetPointInfo;

                    /**
                     * Decodes a ResetPointInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResetPointInfo
                     * @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)): temporal.api.workflow.v1.ResetPointInfo;

                    /**
                     * Creates a ResetPointInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResetPointInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.ResetPointInfo;

                    /**
                     * Creates a plain object from a ResetPointInfo message. Also converts values to other types if specified.
                     * @param message ResetPointInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.ResetPointInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResetPointInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResetPointInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NewWorkflowExecutionInfo. */
                interface INewWorkflowExecutionInfo {

                    /** NewWorkflowExecutionInfo workflowId */
                    workflowId?: (string|null);

                    /** NewWorkflowExecutionInfo workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** NewWorkflowExecutionInfo taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** Serialized arguments to the workflow. */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new. */
                    workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run. */
                    workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** Default: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE. */
                    workflowIdReusePolicy?: (temporal.api.enums.v1.WorkflowIdReusePolicy|null);

                    /** The retry policy for the workflow. Will never exceed `workflow_execution_timeout`. */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** See https://docs.temporal.io/docs/content/what-is-a-temporal-cron-job/ */
                    cronSchedule?: (string|null);

                    /** NewWorkflowExecutionInfo memo */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** NewWorkflowExecutionInfo searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** NewWorkflowExecutionInfo header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Metadata on the workflow if it is started. This is carried over to the WorkflowExecutionConfig
                     * for use by user interfaces to display the fixed as-of-start summary and details of the
                     * workflow.
                     */
                    userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /**
                     * If set, takes precedence over the Versioning Behavior sent by the SDK on Workflow Task completion.
                     * To unset the override after the workflow is running, use UpdateWorkflowExecutionOptions.
                     */
                    versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /** Priority metadata */
                    priority?: (temporal.api.common.v1.IPriority|null);
                }

                /**
                 * NewWorkflowExecutionInfo is a shared message that encapsulates all the
                 * required arguments to starting a workflow in different contexts.
                 */
                class NewWorkflowExecutionInfo implements INewWorkflowExecutionInfo {

                    /**
                     * Constructs a new NewWorkflowExecutionInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.INewWorkflowExecutionInfo);

                    /** NewWorkflowExecutionInfo workflowId. */
                    public workflowId: string;

                    /** NewWorkflowExecutionInfo workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** NewWorkflowExecutionInfo taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** Serialized arguments to the workflow. */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new. */
                    public workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run. */
                    public workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    public workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** Default: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE. */
                    public workflowIdReusePolicy: temporal.api.enums.v1.WorkflowIdReusePolicy;

                    /** The retry policy for the workflow. Will never exceed `workflow_execution_timeout`. */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** See https://docs.temporal.io/docs/content/what-is-a-temporal-cron-job/ */
                    public cronSchedule: string;

                    /** NewWorkflowExecutionInfo memo. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** NewWorkflowExecutionInfo searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** NewWorkflowExecutionInfo header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Metadata on the workflow if it is started. This is carried over to the WorkflowExecutionConfig
                     * for use by user interfaces to display the fixed as-of-start summary and details of the
                     * workflow.
                     */
                    public userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /**
                     * If set, takes precedence over the Versioning Behavior sent by the SDK on Workflow Task completion.
                     * To unset the override after the workflow is running, use UpdateWorkflowExecutionOptions.
                     */
                    public versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /** Priority metadata */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * Creates a new NewWorkflowExecutionInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NewWorkflowExecutionInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.INewWorkflowExecutionInfo): temporal.api.workflow.v1.NewWorkflowExecutionInfo;

                    /**
                     * Encodes the specified NewWorkflowExecutionInfo message. Does not implicitly {@link temporal.api.workflow.v1.NewWorkflowExecutionInfo.verify|verify} messages.
                     * @param message NewWorkflowExecutionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.INewWorkflowExecutionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NewWorkflowExecutionInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.NewWorkflowExecutionInfo.verify|verify} messages.
                     * @param message NewWorkflowExecutionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.INewWorkflowExecutionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NewWorkflowExecutionInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NewWorkflowExecutionInfo
                     * @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): temporal.api.workflow.v1.NewWorkflowExecutionInfo;

                    /**
                     * Decodes a NewWorkflowExecutionInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NewWorkflowExecutionInfo
                     * @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)): temporal.api.workflow.v1.NewWorkflowExecutionInfo;

                    /**
                     * Creates a NewWorkflowExecutionInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NewWorkflowExecutionInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.NewWorkflowExecutionInfo;

                    /**
                     * Creates a plain object from a NewWorkflowExecutionInfo message. Also converts values to other types if specified.
                     * @param message NewWorkflowExecutionInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.NewWorkflowExecutionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NewWorkflowExecutionInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NewWorkflowExecutionInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CallbackInfo. */
                interface ICallbackInfo {

                    /** Information on how this callback should be invoked (e.g. its URL and type). */
                    callback?: (temporal.api.common.v1.ICallback|null);

                    /** Trigger for this callback. */
                    trigger?: (temporal.api.workflow.v1.CallbackInfo.ITrigger|null);

                    /** The time when the callback was registered. */
                    registrationTime?: (google.protobuf.ITimestamp|null);

                    /** CallbackInfo state */
                    state?: (temporal.api.enums.v1.CallbackState|null);

                    /**
                     * The number of attempts made to deliver the callback.
                     * This number represents a minimum bound since the attempt is incremented after the callback request completes.
                     */
                    attempt?: (number|null);

                    /** The time when the last attempt completed. */
                    lastAttemptCompleteTime?: (google.protobuf.ITimestamp|null);

                    /** The last attempt's failure, if any. */
                    lastAttemptFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** The time when the next attempt is scheduled. */
                    nextAttemptScheduleTime?: (google.protobuf.ITimestamp|null);

                    /** If the state is BLOCKED, blocked reason provides additional information. */
                    blockedReason?: (string|null);
                }

                /** CallbackInfo contains the state of an attached workflow callback. */
                class CallbackInfo implements ICallbackInfo {

                    /**
                     * Constructs a new CallbackInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.ICallbackInfo);

                    /** Information on how this callback should be invoked (e.g. its URL and type). */
                    public callback?: (temporal.api.common.v1.ICallback|null);

                    /** Trigger for this callback. */
                    public trigger?: (temporal.api.workflow.v1.CallbackInfo.ITrigger|null);

                    /** The time when the callback was registered. */
                    public registrationTime?: (google.protobuf.ITimestamp|null);

                    /** CallbackInfo state. */
                    public state: temporal.api.enums.v1.CallbackState;

                    /**
                     * The number of attempts made to deliver the callback.
                     * This number represents a minimum bound since the attempt is incremented after the callback request completes.
                     */
                    public attempt: number;

                    /** The time when the last attempt completed. */
                    public lastAttemptCompleteTime?: (google.protobuf.ITimestamp|null);

                    /** The last attempt's failure, if any. */
                    public lastAttemptFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** The time when the next attempt is scheduled. */
                    public nextAttemptScheduleTime?: (google.protobuf.ITimestamp|null);

                    /** If the state is BLOCKED, blocked reason provides additional information. */
                    public blockedReason: string;

                    /**
                     * Creates a new CallbackInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CallbackInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.ICallbackInfo): temporal.api.workflow.v1.CallbackInfo;

                    /**
                     * Encodes the specified CallbackInfo message. Does not implicitly {@link temporal.api.workflow.v1.CallbackInfo.verify|verify} messages.
                     * @param message CallbackInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.ICallbackInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CallbackInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.CallbackInfo.verify|verify} messages.
                     * @param message CallbackInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.ICallbackInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CallbackInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CallbackInfo
                     * @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): temporal.api.workflow.v1.CallbackInfo;

                    /**
                     * Decodes a CallbackInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CallbackInfo
                     * @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)): temporal.api.workflow.v1.CallbackInfo;

                    /**
                     * Creates a CallbackInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CallbackInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.CallbackInfo;

                    /**
                     * Creates a plain object from a CallbackInfo message. Also converts values to other types if specified.
                     * @param message CallbackInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.CallbackInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CallbackInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CallbackInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace CallbackInfo {

                    /** Properties of a WorkflowClosed. */
                    interface IWorkflowClosed {
                    }

                    /** Trigger for when the workflow is closed. */
                    class WorkflowClosed implements IWorkflowClosed {

                        /**
                         * Constructs a new WorkflowClosed.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflow.v1.CallbackInfo.IWorkflowClosed);

                        /**
                         * Creates a new WorkflowClosed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WorkflowClosed instance
                         */
                        public static create(properties?: temporal.api.workflow.v1.CallbackInfo.IWorkflowClosed): temporal.api.workflow.v1.CallbackInfo.WorkflowClosed;

                        /**
                         * Encodes the specified WorkflowClosed message. Does not implicitly {@link temporal.api.workflow.v1.CallbackInfo.WorkflowClosed.verify|verify} messages.
                         * @param message WorkflowClosed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflow.v1.CallbackInfo.IWorkflowClosed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WorkflowClosed message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.CallbackInfo.WorkflowClosed.verify|verify} messages.
                         * @param message WorkflowClosed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflow.v1.CallbackInfo.IWorkflowClosed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WorkflowClosed message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WorkflowClosed
                         * @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): temporal.api.workflow.v1.CallbackInfo.WorkflowClosed;

                        /**
                         * Decodes a WorkflowClosed message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WorkflowClosed
                         * @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)): temporal.api.workflow.v1.CallbackInfo.WorkflowClosed;

                        /**
                         * Creates a WorkflowClosed message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WorkflowClosed
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.CallbackInfo.WorkflowClosed;

                        /**
                         * Creates a plain object from a WorkflowClosed message. Also converts values to other types if specified.
                         * @param message WorkflowClosed
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflow.v1.CallbackInfo.WorkflowClosed, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WorkflowClosed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WorkflowClosed
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Trigger. */
                    interface ITrigger {

                        /** Trigger workflowClosed */
                        workflowClosed?: (temporal.api.workflow.v1.CallbackInfo.IWorkflowClosed|null);
                    }

                    /** Represents a Trigger. */
                    class Trigger implements ITrigger {

                        /**
                         * Constructs a new Trigger.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflow.v1.CallbackInfo.ITrigger);

                        /** Trigger workflowClosed. */
                        public workflowClosed?: (temporal.api.workflow.v1.CallbackInfo.IWorkflowClosed|null);

                        /** Trigger variant. */
                        public variant?: "workflowClosed";

                        /**
                         * Creates a new Trigger instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Trigger instance
                         */
                        public static create(properties?: temporal.api.workflow.v1.CallbackInfo.ITrigger): temporal.api.workflow.v1.CallbackInfo.Trigger;

                        /**
                         * Encodes the specified Trigger message. Does not implicitly {@link temporal.api.workflow.v1.CallbackInfo.Trigger.verify|verify} messages.
                         * @param message Trigger message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflow.v1.CallbackInfo.ITrigger, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Trigger message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.CallbackInfo.Trigger.verify|verify} messages.
                         * @param message Trigger message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflow.v1.CallbackInfo.ITrigger, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Trigger message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Trigger
                         * @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): temporal.api.workflow.v1.CallbackInfo.Trigger;

                        /**
                         * Decodes a Trigger message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Trigger
                         * @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)): temporal.api.workflow.v1.CallbackInfo.Trigger;

                        /**
                         * Creates a Trigger message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Trigger
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.CallbackInfo.Trigger;

                        /**
                         * Creates a plain object from a Trigger message. Also converts values to other types if specified.
                         * @param message Trigger
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflow.v1.CallbackInfo.Trigger, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Trigger to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Trigger
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a PendingNexusOperationInfo. */
                interface IPendingNexusOperationInfo {

                    /**
                     * Endpoint name.
                     * Resolved to a URL via the cluster's endpoint registry.
                     */
                    endpoint?: (string|null);

                    /** Service name. */
                    service?: (string|null);

                    /** Operation name. */
                    operation?: (string|null);

                    /**
                     * Operation ID. Only set for asynchronous operations after a successful StartOperation call.
                     *
                     * Deprecated. Renamed to operation_token.
                     */
                    operationId?: (string|null);

                    /**
                     * Schedule-to-close timeout for this operation.
                     * This is the only timeout settable by a workflow.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** The time when the operation was scheduled. */
                    scheduledTime?: (google.protobuf.ITimestamp|null);

                    /** PendingNexusOperationInfo state */
                    state?: (temporal.api.enums.v1.PendingNexusOperationState|null);

                    /**
                     * The number of attempts made to deliver the start operation request.
                     * This number represents a minimum bound since the attempt is incremented after the request completes.
                     */
                    attempt?: (number|null);

                    /** The time when the last attempt completed. */
                    lastAttemptCompleteTime?: (google.protobuf.ITimestamp|null);

                    /** The last attempt's failure, if any. */
                    lastAttemptFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** The time when the next attempt is scheduled. */
                    nextAttemptScheduleTime?: (google.protobuf.ITimestamp|null);

                    /** PendingNexusOperationInfo cancellationInfo */
                    cancellationInfo?: (temporal.api.workflow.v1.INexusOperationCancellationInfo|null);

                    /**
                     * The event ID of the NexusOperationScheduled event. Can be used to correlate an operation in the
                     * DescribeWorkflowExecution response with workflow history.
                     */
                    scheduledEventId?: (Long|null);

                    /** If the state is BLOCKED, blocked reason provides additional information. */
                    blockedReason?: (string|null);

                    /** Operation token. Only set for asynchronous operations after a successful StartOperation call. */
                    operationToken?: (string|null);

                    /**
                     * Schedule-to-start timeout for this operation.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Start-to-close timeout for this operation.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    startToCloseTimeout?: (google.protobuf.IDuration|null);
                }

                /** PendingNexusOperationInfo contains the state of a pending Nexus operation. */
                class PendingNexusOperationInfo implements IPendingNexusOperationInfo {

                    /**
                     * Constructs a new PendingNexusOperationInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IPendingNexusOperationInfo);

                    /**
                     * Endpoint name.
                     * Resolved to a URL via the cluster's endpoint registry.
                     */
                    public endpoint: string;

                    /** Service name. */
                    public service: string;

                    /** Operation name. */
                    public operation: string;

                    /**
                     * Operation ID. Only set for asynchronous operations after a successful StartOperation call.
                     *
                     * Deprecated. Renamed to operation_token.
                     */
                    public operationId: string;

                    /**
                     * Schedule-to-close timeout for this operation.
                     * This is the only timeout settable by a workflow.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** The time when the operation was scheduled. */
                    public scheduledTime?: (google.protobuf.ITimestamp|null);

                    /** PendingNexusOperationInfo state. */
                    public state: temporal.api.enums.v1.PendingNexusOperationState;

                    /**
                     * The number of attempts made to deliver the start operation request.
                     * This number represents a minimum bound since the attempt is incremented after the request completes.
                     */
                    public attempt: number;

                    /** The time when the last attempt completed. */
                    public lastAttemptCompleteTime?: (google.protobuf.ITimestamp|null);

                    /** The last attempt's failure, if any. */
                    public lastAttemptFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** The time when the next attempt is scheduled. */
                    public nextAttemptScheduleTime?: (google.protobuf.ITimestamp|null);

                    /** PendingNexusOperationInfo cancellationInfo. */
                    public cancellationInfo?: (temporal.api.workflow.v1.INexusOperationCancellationInfo|null);

                    /**
                     * The event ID of the NexusOperationScheduled event. Can be used to correlate an operation in the
                     * DescribeWorkflowExecution response with workflow history.
                     */
                    public scheduledEventId: Long;

                    /** If the state is BLOCKED, blocked reason provides additional information. */
                    public blockedReason: string;

                    /** Operation token. Only set for asynchronous operations after a successful StartOperation call. */
                    public operationToken: string;

                    /**
                     * Schedule-to-start timeout for this operation.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Start-to-close timeout for this operation.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Creates a new PendingNexusOperationInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PendingNexusOperationInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IPendingNexusOperationInfo): temporal.api.workflow.v1.PendingNexusOperationInfo;

                    /**
                     * Encodes the specified PendingNexusOperationInfo message. Does not implicitly {@link temporal.api.workflow.v1.PendingNexusOperationInfo.verify|verify} messages.
                     * @param message PendingNexusOperationInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IPendingNexusOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PendingNexusOperationInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.PendingNexusOperationInfo.verify|verify} messages.
                     * @param message PendingNexusOperationInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IPendingNexusOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PendingNexusOperationInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PendingNexusOperationInfo
                     * @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): temporal.api.workflow.v1.PendingNexusOperationInfo;

                    /**
                     * Decodes a PendingNexusOperationInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PendingNexusOperationInfo
                     * @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)): temporal.api.workflow.v1.PendingNexusOperationInfo;

                    /**
                     * Creates a PendingNexusOperationInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PendingNexusOperationInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.PendingNexusOperationInfo;

                    /**
                     * Creates a plain object from a PendingNexusOperationInfo message. Also converts values to other types if specified.
                     * @param message PendingNexusOperationInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.PendingNexusOperationInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PendingNexusOperationInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PendingNexusOperationInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NexusOperationCancellationInfo. */
                interface INexusOperationCancellationInfo {

                    /** The time when cancellation was requested. */
                    requestedTime?: (google.protobuf.ITimestamp|null);

                    /** NexusOperationCancellationInfo state */
                    state?: (temporal.api.enums.v1.NexusOperationCancellationState|null);

                    /**
                     * The number of attempts made to deliver the cancel operation request.
                     * This number represents a minimum bound since the attempt is incremented after the request completes.
                     */
                    attempt?: (number|null);

                    /** The time when the last attempt completed. */
                    lastAttemptCompleteTime?: (google.protobuf.ITimestamp|null);

                    /** The last attempt's failure, if any. */
                    lastAttemptFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** The time when the next attempt is scheduled. */
                    nextAttemptScheduleTime?: (google.protobuf.ITimestamp|null);

                    /** If the state is BLOCKED, blocked reason provides additional information. */
                    blockedReason?: (string|null);
                }

                /** NexusOperationCancellationInfo contains the state of a nexus operation cancellation. */
                class NexusOperationCancellationInfo implements INexusOperationCancellationInfo {

                    /**
                     * Constructs a new NexusOperationCancellationInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.INexusOperationCancellationInfo);

                    /** The time when cancellation was requested. */
                    public requestedTime?: (google.protobuf.ITimestamp|null);

                    /** NexusOperationCancellationInfo state. */
                    public state: temporal.api.enums.v1.NexusOperationCancellationState;

                    /**
                     * The number of attempts made to deliver the cancel operation request.
                     * This number represents a minimum bound since the attempt is incremented after the request completes.
                     */
                    public attempt: number;

                    /** The time when the last attempt completed. */
                    public lastAttemptCompleteTime?: (google.protobuf.ITimestamp|null);

                    /** The last attempt's failure, if any. */
                    public lastAttemptFailure?: (temporal.api.failure.v1.IFailure|null);

                    /** The time when the next attempt is scheduled. */
                    public nextAttemptScheduleTime?: (google.protobuf.ITimestamp|null);

                    /** If the state is BLOCKED, blocked reason provides additional information. */
                    public blockedReason: string;

                    /**
                     * Creates a new NexusOperationCancellationInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NexusOperationCancellationInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.INexusOperationCancellationInfo): temporal.api.workflow.v1.NexusOperationCancellationInfo;

                    /**
                     * Encodes the specified NexusOperationCancellationInfo message. Does not implicitly {@link temporal.api.workflow.v1.NexusOperationCancellationInfo.verify|verify} messages.
                     * @param message NexusOperationCancellationInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.INexusOperationCancellationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NexusOperationCancellationInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.NexusOperationCancellationInfo.verify|verify} messages.
                     * @param message NexusOperationCancellationInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.INexusOperationCancellationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NexusOperationCancellationInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NexusOperationCancellationInfo
                     * @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): temporal.api.workflow.v1.NexusOperationCancellationInfo;

                    /**
                     * Decodes a NexusOperationCancellationInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NexusOperationCancellationInfo
                     * @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)): temporal.api.workflow.v1.NexusOperationCancellationInfo;

                    /**
                     * Creates a NexusOperationCancellationInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NexusOperationCancellationInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.NexusOperationCancellationInfo;

                    /**
                     * Creates a plain object from a NexusOperationCancellationInfo message. Also converts values to other types if specified.
                     * @param message NexusOperationCancellationInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.NexusOperationCancellationInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NexusOperationCancellationInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NexusOperationCancellationInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionOptions. */
                interface IWorkflowExecutionOptions {

                    /** If set, takes precedence over the Versioning Behavior sent by the SDK on Workflow Task completion. */
                    versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /** If set, overrides the workflow's priority sent by the SDK. */
                    priority?: (temporal.api.common.v1.IPriority|null);
                }

                /** Represents a WorkflowExecutionOptions. */
                class WorkflowExecutionOptions implements IWorkflowExecutionOptions {

                    /**
                     * Constructs a new WorkflowExecutionOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IWorkflowExecutionOptions);

                    /** If set, takes precedence over the Versioning Behavior sent by the SDK on Workflow Task completion. */
                    public versioningOverride?: (temporal.api.workflow.v1.IVersioningOverride|null);

                    /** If set, overrides the workflow's priority sent by the SDK. */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * Creates a new WorkflowExecutionOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionOptions instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IWorkflowExecutionOptions): temporal.api.workflow.v1.WorkflowExecutionOptions;

                    /**
                     * Encodes the specified WorkflowExecutionOptions message. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionOptions.verify|verify} messages.
                     * @param message WorkflowExecutionOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IWorkflowExecutionOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionOptions message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionOptions.verify|verify} messages.
                     * @param message WorkflowExecutionOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IWorkflowExecutionOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionOptions
                     * @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): temporal.api.workflow.v1.WorkflowExecutionOptions;

                    /**
                     * Decodes a WorkflowExecutionOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionOptions
                     * @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)): temporal.api.workflow.v1.WorkflowExecutionOptions;

                    /**
                     * Creates a WorkflowExecutionOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionOptions
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.WorkflowExecutionOptions;

                    /**
                     * Creates a plain object from a WorkflowExecutionOptions message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.WorkflowExecutionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a VersioningOverride. */
                interface IVersioningOverride {

                    /** Override the workflow to have Pinned behavior. */
                    pinned?: (temporal.api.workflow.v1.VersioningOverride.IPinnedOverride|null);

                    /** Override the workflow to have AutoUpgrade behavior. */
                    autoUpgrade?: (boolean|null);

                    /**
                     * Required.
                     * Deprecated. Use `override`.
                     */
                    behavior?: (temporal.api.enums.v1.VersioningBehavior|null);

                    /**
                     * Required if behavior is `PINNED`. Must be null if behavior is `AUTO_UPGRADE`.
                     * Identifies the worker deployment to pin the workflow to.
                     * Deprecated. Use `override.pinned.version`.
                     */
                    deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /**
                     * Required if behavior is `PINNED`. Must be absent if behavior is not `PINNED`.
                     * Identifies the worker deployment version to pin the workflow to, in the format
                     * "<deployment_name>.<build_id>".
                     * Deprecated. Use `override.pinned.version`.
                     */
                    pinnedVersion?: (string|null);
                }

                /**
                 * Used to override the versioning behavior (and pinned deployment version, if applicable) of a
                 * specific workflow execution. If set, this override takes precedence over worker-sent values.
                 * See `WorkflowExecutionInfo.VersioningInfo` for more information.
                 *
                 * To remove the override, call `UpdateWorkflowExecutionOptions` with a null
                 * `VersioningOverride`, and use the `update_mask` to indicate that it should be mutated.
                 *
                 * Pinned behavior overrides are automatically inherited by child workflows, workflow retries, continue-as-new
                 * workflows, and cron workflows.
                 */
                class VersioningOverride implements IVersioningOverride {

                    /**
                     * Constructs a new VersioningOverride.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IVersioningOverride);

                    /** Override the workflow to have Pinned behavior. */
                    public pinned?: (temporal.api.workflow.v1.VersioningOverride.IPinnedOverride|null);

                    /** Override the workflow to have AutoUpgrade behavior. */
                    public autoUpgrade?: (boolean|null);

                    /**
                     * Required.
                     * Deprecated. Use `override`.
                     */
                    public behavior: temporal.api.enums.v1.VersioningBehavior;

                    /**
                     * Required if behavior is `PINNED`. Must be null if behavior is `AUTO_UPGRADE`.
                     * Identifies the worker deployment to pin the workflow to.
                     * Deprecated. Use `override.pinned.version`.
                     */
                    public deployment?: (temporal.api.deployment.v1.IDeployment|null);

                    /**
                     * Required if behavior is `PINNED`. Must be absent if behavior is not `PINNED`.
                     * Identifies the worker deployment version to pin the workflow to, in the format
                     * "<deployment_name>.<build_id>".
                     * Deprecated. Use `override.pinned.version`.
                     */
                    public pinnedVersion: string;

                    /** Indicates whether to override the workflow to be AutoUpgrade or Pinned. */
                    public override?: ("pinned"|"autoUpgrade");

                    /**
                     * Creates a new VersioningOverride instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns VersioningOverride instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IVersioningOverride): temporal.api.workflow.v1.VersioningOverride;

                    /**
                     * Encodes the specified VersioningOverride message. Does not implicitly {@link temporal.api.workflow.v1.VersioningOverride.verify|verify} messages.
                     * @param message VersioningOverride message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IVersioningOverride, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified VersioningOverride message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.VersioningOverride.verify|verify} messages.
                     * @param message VersioningOverride message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IVersioningOverride, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a VersioningOverride message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns VersioningOverride
                     * @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): temporal.api.workflow.v1.VersioningOverride;

                    /**
                     * Decodes a VersioningOverride message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns VersioningOverride
                     * @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)): temporal.api.workflow.v1.VersioningOverride;

                    /**
                     * Creates a VersioningOverride message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns VersioningOverride
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.VersioningOverride;

                    /**
                     * Creates a plain object from a VersioningOverride message. Also converts values to other types if specified.
                     * @param message VersioningOverride
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.VersioningOverride, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this VersioningOverride to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for VersioningOverride
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace VersioningOverride {

                    /** Properties of a PinnedOverride. */
                    interface IPinnedOverride {

                        /**
                         * Defaults to PINNED_OVERRIDE_BEHAVIOR_UNSPECIFIED.
                         * See `PinnedOverrideBehavior` for details.
                         */
                        behavior?: (temporal.api.workflow.v1.VersioningOverride.PinnedOverrideBehavior|null);

                        /**
                         * Specifies the Worker Deployment Version to pin this workflow to.
                         * Required if the target workflow is not already pinned to a version.
                         *
                         * If omitted and the target workflow is already pinned, the effective
                         * pinned version will be the existing pinned version.
                         *
                         * If omitted and the target workflow is not pinned, the override request
                         * will be rejected with a PreconditionFailed error.
                         */
                        version?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);
                    }

                    /** Represents a PinnedOverride. */
                    class PinnedOverride implements IPinnedOverride {

                        /**
                         * Constructs a new PinnedOverride.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflow.v1.VersioningOverride.IPinnedOverride);

                        /**
                         * Defaults to PINNED_OVERRIDE_BEHAVIOR_UNSPECIFIED.
                         * See `PinnedOverrideBehavior` for details.
                         */
                        public behavior: temporal.api.workflow.v1.VersioningOverride.PinnedOverrideBehavior;

                        /**
                         * Specifies the Worker Deployment Version to pin this workflow to.
                         * Required if the target workflow is not already pinned to a version.
                         *
                         * If omitted and the target workflow is already pinned, the effective
                         * pinned version will be the existing pinned version.
                         *
                         * If omitted and the target workflow is not pinned, the override request
                         * will be rejected with a PreconditionFailed error.
                         */
                        public version?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                        /**
                         * Creates a new PinnedOverride instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PinnedOverride instance
                         */
                        public static create(properties?: temporal.api.workflow.v1.VersioningOverride.IPinnedOverride): temporal.api.workflow.v1.VersioningOverride.PinnedOverride;

                        /**
                         * Encodes the specified PinnedOverride message. Does not implicitly {@link temporal.api.workflow.v1.VersioningOverride.PinnedOverride.verify|verify} messages.
                         * @param message PinnedOverride message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflow.v1.VersioningOverride.IPinnedOverride, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PinnedOverride message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.VersioningOverride.PinnedOverride.verify|verify} messages.
                         * @param message PinnedOverride message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflow.v1.VersioningOverride.IPinnedOverride, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PinnedOverride message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PinnedOverride
                         * @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): temporal.api.workflow.v1.VersioningOverride.PinnedOverride;

                        /**
                         * Decodes a PinnedOverride message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PinnedOverride
                         * @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)): temporal.api.workflow.v1.VersioningOverride.PinnedOverride;

                        /**
                         * Creates a PinnedOverride message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PinnedOverride
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.VersioningOverride.PinnedOverride;

                        /**
                         * Creates a plain object from a PinnedOverride message. Also converts values to other types if specified.
                         * @param message PinnedOverride
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflow.v1.VersioningOverride.PinnedOverride, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PinnedOverride to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PinnedOverride
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** PinnedOverrideBehavior enum. */
                    enum PinnedOverrideBehavior {
                        PINNED_OVERRIDE_BEHAVIOR_UNSPECIFIED = 0,
                        PINNED_OVERRIDE_BEHAVIOR_PINNED = 1
                    }
                }

                /** Properties of an OnConflictOptions. */
                interface IOnConflictOptions {

                    /** Attaches the request ID to the running workflow. */
                    attachRequestId?: (boolean|null);

                    /** Attaches the completion callbacks to the running workflow. */
                    attachCompletionCallbacks?: (boolean|null);

                    /** Attaches the links to the WorkflowExecutionOptionsUpdatedEvent history event. */
                    attachLinks?: (boolean|null);
                }

                /**
                 * When StartWorkflowExecution uses the conflict policy WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING and
                 * there is already an existing running workflow, OnConflictOptions defines actions to be taken on
                 * the existing running workflow. In this case, it will create a WorkflowExecutionOptionsUpdatedEvent
                 * history event in the running workflow with the changes requested in this object.
                 */
                class OnConflictOptions implements IOnConflictOptions {

                    /**
                     * Constructs a new OnConflictOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IOnConflictOptions);

                    /** Attaches the request ID to the running workflow. */
                    public attachRequestId: boolean;

                    /** Attaches the completion callbacks to the running workflow. */
                    public attachCompletionCallbacks: boolean;

                    /** Attaches the links to the WorkflowExecutionOptionsUpdatedEvent history event. */
                    public attachLinks: boolean;

                    /**
                     * Creates a new OnConflictOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns OnConflictOptions instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IOnConflictOptions): temporal.api.workflow.v1.OnConflictOptions;

                    /**
                     * Encodes the specified OnConflictOptions message. Does not implicitly {@link temporal.api.workflow.v1.OnConflictOptions.verify|verify} messages.
                     * @param message OnConflictOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IOnConflictOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified OnConflictOptions message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.OnConflictOptions.verify|verify} messages.
                     * @param message OnConflictOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IOnConflictOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an OnConflictOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns OnConflictOptions
                     * @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): temporal.api.workflow.v1.OnConflictOptions;

                    /**
                     * Decodes an OnConflictOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns OnConflictOptions
                     * @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)): temporal.api.workflow.v1.OnConflictOptions;

                    /**
                     * Creates an OnConflictOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns OnConflictOptions
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.OnConflictOptions;

                    /**
                     * Creates a plain object from an OnConflictOptions message. Also converts values to other types if specified.
                     * @param message OnConflictOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.OnConflictOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this OnConflictOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for OnConflictOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RequestIdInfo. */
                interface IRequestIdInfo {

                    /** The event type of the history event generated by the request. */
                    eventType?: (temporal.api.enums.v1.EventType|null);

                    /**
                     * The event id of the history event generated by the request. It's possible the event ID is not
                     * known (unflushed buffered event). In this case, the value will be zero or a negative value,
                     * representing an invalid ID.
                     */
                    eventId?: (Long|null);

                    /**
                     * Indicate if the request is still buffered. If so, the event ID is not known and its value
                     * will be an invalid event ID.
                     */
                    buffered?: (boolean|null);
                }

                /** RequestIdInfo contains details of a request ID. */
                class RequestIdInfo implements IRequestIdInfo {

                    /**
                     * Constructs a new RequestIdInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IRequestIdInfo);

                    /** The event type of the history event generated by the request. */
                    public eventType: temporal.api.enums.v1.EventType;

                    /**
                     * The event id of the history event generated by the request. It's possible the event ID is not
                     * known (unflushed buffered event). In this case, the value will be zero or a negative value,
                     * representing an invalid ID.
                     */
                    public eventId: Long;

                    /**
                     * Indicate if the request is still buffered. If so, the event ID is not known and its value
                     * will be an invalid event ID.
                     */
                    public buffered: boolean;

                    /**
                     * Creates a new RequestIdInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RequestIdInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IRequestIdInfo): temporal.api.workflow.v1.RequestIdInfo;

                    /**
                     * Encodes the specified RequestIdInfo message. Does not implicitly {@link temporal.api.workflow.v1.RequestIdInfo.verify|verify} messages.
                     * @param message RequestIdInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IRequestIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RequestIdInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.RequestIdInfo.verify|verify} messages.
                     * @param message RequestIdInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IRequestIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RequestIdInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RequestIdInfo
                     * @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): temporal.api.workflow.v1.RequestIdInfo;

                    /**
                     * Decodes a RequestIdInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RequestIdInfo
                     * @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)): temporal.api.workflow.v1.RequestIdInfo;

                    /**
                     * Creates a RequestIdInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RequestIdInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.RequestIdInfo;

                    /**
                     * Creates a plain object from a RequestIdInfo message. Also converts values to other types if specified.
                     * @param message RequestIdInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.RequestIdInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RequestIdInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RequestIdInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PostResetOperation. */
                interface IPostResetOperation {

                    /** PostResetOperation signalWorkflow */
                    signalWorkflow?: (temporal.api.workflow.v1.PostResetOperation.ISignalWorkflow|null);

                    /** PostResetOperation updateWorkflowOptions */
                    updateWorkflowOptions?: (temporal.api.workflow.v1.PostResetOperation.IUpdateWorkflowOptions|null);
                }

                /** PostResetOperation represents an operation to be performed on the new workflow execution after a workflow reset. */
                class PostResetOperation implements IPostResetOperation {

                    /**
                     * Constructs a new PostResetOperation.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IPostResetOperation);

                    /** PostResetOperation signalWorkflow. */
                    public signalWorkflow?: (temporal.api.workflow.v1.PostResetOperation.ISignalWorkflow|null);

                    /** PostResetOperation updateWorkflowOptions. */
                    public updateWorkflowOptions?: (temporal.api.workflow.v1.PostResetOperation.IUpdateWorkflowOptions|null);

                    /** PostResetOperation variant. */
                    public variant?: ("signalWorkflow"|"updateWorkflowOptions");

                    /**
                     * Creates a new PostResetOperation instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PostResetOperation instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IPostResetOperation): temporal.api.workflow.v1.PostResetOperation;

                    /**
                     * Encodes the specified PostResetOperation message. Does not implicitly {@link temporal.api.workflow.v1.PostResetOperation.verify|verify} messages.
                     * @param message PostResetOperation message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IPostResetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PostResetOperation message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.PostResetOperation.verify|verify} messages.
                     * @param message PostResetOperation message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IPostResetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PostResetOperation message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PostResetOperation
                     * @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): temporal.api.workflow.v1.PostResetOperation;

                    /**
                     * Decodes a PostResetOperation message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PostResetOperation
                     * @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)): temporal.api.workflow.v1.PostResetOperation;

                    /**
                     * Creates a PostResetOperation message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PostResetOperation
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.PostResetOperation;

                    /**
                     * Creates a plain object from a PostResetOperation message. Also converts values to other types if specified.
                     * @param message PostResetOperation
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.PostResetOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PostResetOperation to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PostResetOperation
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PostResetOperation {

                    /** Properties of a SignalWorkflow. */
                    interface ISignalWorkflow {

                        /** The workflow author-defined name of the signal to send to the workflow. */
                        signalName?: (string|null);

                        /** Serialized value(s) to provide with the signal. */
                        input?: (temporal.api.common.v1.IPayloads|null);

                        /** Headers that are passed with the signal to the processing workflow. */
                        header?: (temporal.api.common.v1.IHeader|null);

                        /** Links to be associated with the WorkflowExecutionSignaled event. */
                        links?: (temporal.api.common.v1.ILink[]|null);
                    }

                    /**
                     * SignalWorkflow represents sending a signal after a workflow reset.
                     * Keep the parameter in sync with temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest.
                     */
                    class SignalWorkflow implements ISignalWorkflow {

                        /**
                         * Constructs a new SignalWorkflow.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflow.v1.PostResetOperation.ISignalWorkflow);

                        /** The workflow author-defined name of the signal to send to the workflow. */
                        public signalName: string;

                        /** Serialized value(s) to provide with the signal. */
                        public input?: (temporal.api.common.v1.IPayloads|null);

                        /** Headers that are passed with the signal to the processing workflow. */
                        public header?: (temporal.api.common.v1.IHeader|null);

                        /** Links to be associated with the WorkflowExecutionSignaled event. */
                        public links: temporal.api.common.v1.ILink[];

                        /**
                         * Creates a new SignalWorkflow instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SignalWorkflow instance
                         */
                        public static create(properties?: temporal.api.workflow.v1.PostResetOperation.ISignalWorkflow): temporal.api.workflow.v1.PostResetOperation.SignalWorkflow;

                        /**
                         * Encodes the specified SignalWorkflow message. Does not implicitly {@link temporal.api.workflow.v1.PostResetOperation.SignalWorkflow.verify|verify} messages.
                         * @param message SignalWorkflow message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflow.v1.PostResetOperation.ISignalWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SignalWorkflow message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.PostResetOperation.SignalWorkflow.verify|verify} messages.
                         * @param message SignalWorkflow message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflow.v1.PostResetOperation.ISignalWorkflow, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SignalWorkflow message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SignalWorkflow
                         * @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): temporal.api.workflow.v1.PostResetOperation.SignalWorkflow;

                        /**
                         * Decodes a SignalWorkflow message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SignalWorkflow
                         * @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)): temporal.api.workflow.v1.PostResetOperation.SignalWorkflow;

                        /**
                         * Creates a SignalWorkflow message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SignalWorkflow
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.PostResetOperation.SignalWorkflow;

                        /**
                         * Creates a plain object from a SignalWorkflow message. Also converts values to other types if specified.
                         * @param message SignalWorkflow
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflow.v1.PostResetOperation.SignalWorkflow, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SignalWorkflow to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SignalWorkflow
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateWorkflowOptions. */
                    interface IUpdateWorkflowOptions {

                        /** Update Workflow options that were originally specified via StartWorkflowExecution. Partial updates are accepted and controlled by update_mask. */
                        workflowExecutionOptions?: (temporal.api.workflow.v1.IWorkflowExecutionOptions|null);

                        /**
                         * Controls which fields from `workflow_execution_options` will be applied.
                         * To unset a field, set it to null and use the update mask to indicate that it should be mutated.
                         */
                        updateMask?: (google.protobuf.IFieldMask|null);
                    }

                    /**
                     * UpdateWorkflowOptions represents updating workflow execution options after a workflow reset.
                     * Keep the parameters in sync with temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsRequest.
                     */
                    class UpdateWorkflowOptions implements IUpdateWorkflowOptions {

                        /**
                         * Constructs a new UpdateWorkflowOptions.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.workflow.v1.PostResetOperation.IUpdateWorkflowOptions);

                        /** Update Workflow options that were originally specified via StartWorkflowExecution. Partial updates are accepted and controlled by update_mask. */
                        public workflowExecutionOptions?: (temporal.api.workflow.v1.IWorkflowExecutionOptions|null);

                        /**
                         * Controls which fields from `workflow_execution_options` will be applied.
                         * To unset a field, set it to null and use the update mask to indicate that it should be mutated.
                         */
                        public updateMask?: (google.protobuf.IFieldMask|null);

                        /**
                         * Creates a new UpdateWorkflowOptions instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateWorkflowOptions instance
                         */
                        public static create(properties?: temporal.api.workflow.v1.PostResetOperation.IUpdateWorkflowOptions): temporal.api.workflow.v1.PostResetOperation.UpdateWorkflowOptions;

                        /**
                         * Encodes the specified UpdateWorkflowOptions message. Does not implicitly {@link temporal.api.workflow.v1.PostResetOperation.UpdateWorkflowOptions.verify|verify} messages.
                         * @param message UpdateWorkflowOptions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.workflow.v1.PostResetOperation.IUpdateWorkflowOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateWorkflowOptions message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.PostResetOperation.UpdateWorkflowOptions.verify|verify} messages.
                         * @param message UpdateWorkflowOptions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.workflow.v1.PostResetOperation.IUpdateWorkflowOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateWorkflowOptions message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateWorkflowOptions
                         * @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): temporal.api.workflow.v1.PostResetOperation.UpdateWorkflowOptions;

                        /**
                         * Decodes an UpdateWorkflowOptions message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateWorkflowOptions
                         * @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)): temporal.api.workflow.v1.PostResetOperation.UpdateWorkflowOptions;

                        /**
                         * Creates an UpdateWorkflowOptions message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateWorkflowOptions
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.PostResetOperation.UpdateWorkflowOptions;

                        /**
                         * Creates a plain object from an UpdateWorkflowOptions message. Also converts values to other types if specified.
                         * @param message UpdateWorkflowOptions
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.workflow.v1.PostResetOperation.UpdateWorkflowOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateWorkflowOptions to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateWorkflowOptions
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a WorkflowExecutionPauseInfo. */
                interface IWorkflowExecutionPauseInfo {

                    /** The identity of the client who paused the workflow execution. */
                    identity?: (string|null);

                    /** The time when the workflow execution was paused. */
                    pausedTime?: (google.protobuf.ITimestamp|null);

                    /** The reason for pausing the workflow execution. */
                    reason?: (string|null);
                }

                /** WorkflowExecutionPauseInfo contains the information about a workflow execution pause. */
                class WorkflowExecutionPauseInfo implements IWorkflowExecutionPauseInfo {

                    /**
                     * Constructs a new WorkflowExecutionPauseInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.workflow.v1.IWorkflowExecutionPauseInfo);

                    /** The identity of the client who paused the workflow execution. */
                    public identity: string;

                    /** The time when the workflow execution was paused. */
                    public pausedTime?: (google.protobuf.ITimestamp|null);

                    /** The reason for pausing the workflow execution. */
                    public reason: string;

                    /**
                     * Creates a new WorkflowExecutionPauseInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionPauseInfo instance
                     */
                    public static create(properties?: temporal.api.workflow.v1.IWorkflowExecutionPauseInfo): temporal.api.workflow.v1.WorkflowExecutionPauseInfo;

                    /**
                     * Encodes the specified WorkflowExecutionPauseInfo message. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionPauseInfo.verify|verify} messages.
                     * @param message WorkflowExecutionPauseInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.workflow.v1.IWorkflowExecutionPauseInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionPauseInfo message, length delimited. Does not implicitly {@link temporal.api.workflow.v1.WorkflowExecutionPauseInfo.verify|verify} messages.
                     * @param message WorkflowExecutionPauseInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.workflow.v1.IWorkflowExecutionPauseInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionPauseInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionPauseInfo
                     * @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): temporal.api.workflow.v1.WorkflowExecutionPauseInfo;

                    /**
                     * Decodes a WorkflowExecutionPauseInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionPauseInfo
                     * @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)): temporal.api.workflow.v1.WorkflowExecutionPauseInfo;

                    /**
                     * Creates a WorkflowExecutionPauseInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionPauseInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.workflow.v1.WorkflowExecutionPauseInfo;

                    /**
                     * Creates a plain object from a WorkflowExecutionPauseInfo message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionPauseInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.workflow.v1.WorkflowExecutionPauseInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionPauseInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionPauseInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace command. */
        namespace command {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a ScheduleActivityTaskCommandAttributes. */
                interface IScheduleActivityTaskCommandAttributes {

                    /** ScheduleActivityTaskCommandAttributes activityId */
                    activityId?: (string|null);

                    /** ScheduleActivityTaskCommandAttributes activityType */
                    activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** ScheduleActivityTaskCommandAttributes taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** ScheduleActivityTaskCommandAttributes header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** ScheduleActivityTaskCommandAttributes input */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Indicates how long the caller is willing to wait for activity completion. The "schedule" time
                     * is when the activity is initially scheduled, not when the most recent retry is scheduled.
                     * Limits how long retries will be attempted. Either this or `start_to_close_timeout` must be
                     * specified. When not specified, defaults to the workflow execution timeout.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Limits the time an activity task can stay in a task queue before a worker picks it up. The
                     * "schedule" time is when the most recent retry is scheduled. This timeout should usually not
                     * be set: it's useful in specific scenarios like worker-specific task queues. This timeout is
                     * always non retryable, as all a retry would achieve is to put it back into the same queue.
                     * Defaults to `schedule_to_close_timeout` or workflow execution timeout if that is not
                     * specified. More info:
                     * https://docs.temporal.io/docs/content/what-is-a-schedule-to-start-timeout/
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum time an activity is allowed to execute after being picked up by a worker. This
                     * timeout is always retryable. Either this or `schedule_to_close_timeout` must be specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Maximum permitted time between successful worker heartbeats. */
                    heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Activities are provided by a default retry policy which is controlled through the service's
                     * dynamic configuration. Retries will be attempted until `schedule_to_close_timeout` has
                     * elapsed. To disable retries set retry_policy.maximum_attempts to 1.
                     */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /**
                     * Request to start the activity directly bypassing matching service and worker polling
                     * The slot for executing the activity should be reserved when setting this field to true.
                     */
                    requestEagerExecution?: (boolean|null);

                    /**
                     * If this is set, the activity would be assigned to the Build ID of the workflow. Otherwise,
                     * Assignment rules of the activity's Task Queue will be used to determine the Build ID.
                     */
                    useWorkflowBuildId?: (boolean|null);

                    /**
                     * Priority metadata. If this message is not present, or any fields are not
                     * present, they inherit the values from the workflow.
                     */
                    priority?: (temporal.api.common.v1.IPriority|null);
                }

                /** Represents a ScheduleActivityTaskCommandAttributes. */
                class ScheduleActivityTaskCommandAttributes implements IScheduleActivityTaskCommandAttributes {

                    /**
                     * Constructs a new ScheduleActivityTaskCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IScheduleActivityTaskCommandAttributes);

                    /** ScheduleActivityTaskCommandAttributes activityId. */
                    public activityId: string;

                    /** ScheduleActivityTaskCommandAttributes activityType. */
                    public activityType?: (temporal.api.common.v1.IActivityType|null);

                    /** ScheduleActivityTaskCommandAttributes taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** ScheduleActivityTaskCommandAttributes header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** ScheduleActivityTaskCommandAttributes input. */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Indicates how long the caller is willing to wait for activity completion. The "schedule" time
                     * is when the activity is initially scheduled, not when the most recent retry is scheduled.
                     * Limits how long retries will be attempted. Either this or `start_to_close_timeout` must be
                     * specified. When not specified, defaults to the workflow execution timeout.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Limits the time an activity task can stay in a task queue before a worker picks it up. The
                     * "schedule" time is when the most recent retry is scheduled. This timeout should usually not
                     * be set: it's useful in specific scenarios like worker-specific task queues. This timeout is
                     * always non retryable, as all a retry would achieve is to put it back into the same queue.
                     * Defaults to `schedule_to_close_timeout` or workflow execution timeout if that is not
                     * specified. More info:
                     * https://docs.temporal.io/docs/content/what-is-a-schedule-to-start-timeout/
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Maximum time an activity is allowed to execute after being picked up by a worker. This
                     * timeout is always retryable. Either this or `schedule_to_close_timeout` must be specified.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /** Maximum permitted time between successful worker heartbeats. */
                    public heartbeatTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Activities are provided by a default retry policy which is controlled through the service's
                     * dynamic configuration. Retries will be attempted until `schedule_to_close_timeout` has
                     * elapsed. To disable retries set retry_policy.maximum_attempts to 1.
                     */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /**
                     * Request to start the activity directly bypassing matching service and worker polling
                     * The slot for executing the activity should be reserved when setting this field to true.
                     */
                    public requestEagerExecution: boolean;

                    /**
                     * If this is set, the activity would be assigned to the Build ID of the workflow. Otherwise,
                     * Assignment rules of the activity's Task Queue will be used to determine the Build ID.
                     */
                    public useWorkflowBuildId: boolean;

                    /**
                     * Priority metadata. If this message is not present, or any fields are not
                     * present, they inherit the values from the workflow.
                     */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * Creates a new ScheduleActivityTaskCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ScheduleActivityTaskCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IScheduleActivityTaskCommandAttributes): temporal.api.command.v1.ScheduleActivityTaskCommandAttributes;

                    /**
                     * Encodes the specified ScheduleActivityTaskCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.ScheduleActivityTaskCommandAttributes.verify|verify} messages.
                     * @param message ScheduleActivityTaskCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IScheduleActivityTaskCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ScheduleActivityTaskCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.ScheduleActivityTaskCommandAttributes.verify|verify} messages.
                     * @param message ScheduleActivityTaskCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IScheduleActivityTaskCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ScheduleActivityTaskCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ScheduleActivityTaskCommandAttributes
                     * @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): temporal.api.command.v1.ScheduleActivityTaskCommandAttributes;

                    /**
                     * Decodes a ScheduleActivityTaskCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ScheduleActivityTaskCommandAttributes
                     * @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)): temporal.api.command.v1.ScheduleActivityTaskCommandAttributes;

                    /**
                     * Creates a ScheduleActivityTaskCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ScheduleActivityTaskCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.ScheduleActivityTaskCommandAttributes;

                    /**
                     * Creates a plain object from a ScheduleActivityTaskCommandAttributes message. Also converts values to other types if specified.
                     * @param message ScheduleActivityTaskCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.ScheduleActivityTaskCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ScheduleActivityTaskCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ScheduleActivityTaskCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RequestCancelActivityTaskCommandAttributes. */
                interface IRequestCancelActivityTaskCommandAttributes {

                    /** The `ACTIVITY_TASK_SCHEDULED` event id for the activity being cancelled. */
                    scheduledEventId?: (Long|null);
                }

                /** Represents a RequestCancelActivityTaskCommandAttributes. */
                class RequestCancelActivityTaskCommandAttributes implements IRequestCancelActivityTaskCommandAttributes {

                    /**
                     * Constructs a new RequestCancelActivityTaskCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IRequestCancelActivityTaskCommandAttributes);

                    /** The `ACTIVITY_TASK_SCHEDULED` event id for the activity being cancelled. */
                    public scheduledEventId: Long;

                    /**
                     * Creates a new RequestCancelActivityTaskCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RequestCancelActivityTaskCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IRequestCancelActivityTaskCommandAttributes): temporal.api.command.v1.RequestCancelActivityTaskCommandAttributes;

                    /**
                     * Encodes the specified RequestCancelActivityTaskCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.RequestCancelActivityTaskCommandAttributes.verify|verify} messages.
                     * @param message RequestCancelActivityTaskCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IRequestCancelActivityTaskCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RequestCancelActivityTaskCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.RequestCancelActivityTaskCommandAttributes.verify|verify} messages.
                     * @param message RequestCancelActivityTaskCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IRequestCancelActivityTaskCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RequestCancelActivityTaskCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RequestCancelActivityTaskCommandAttributes
                     * @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): temporal.api.command.v1.RequestCancelActivityTaskCommandAttributes;

                    /**
                     * Decodes a RequestCancelActivityTaskCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RequestCancelActivityTaskCommandAttributes
                     * @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)): temporal.api.command.v1.RequestCancelActivityTaskCommandAttributes;

                    /**
                     * Creates a RequestCancelActivityTaskCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RequestCancelActivityTaskCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.RequestCancelActivityTaskCommandAttributes;

                    /**
                     * Creates a plain object from a RequestCancelActivityTaskCommandAttributes message. Also converts values to other types if specified.
                     * @param message RequestCancelActivityTaskCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.RequestCancelActivityTaskCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RequestCancelActivityTaskCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RequestCancelActivityTaskCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartTimerCommandAttributes. */
                interface IStartTimerCommandAttributes {

                    /**
                     * An id for the timer, currently live timers must have different ids. Typically autogenerated
                     * by the SDK.
                     */
                    timerId?: (string|null);

                    /**
                     * How long until the timer fires, producing a `TIMER_FIRED` event.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    startToFireTimeout?: (google.protobuf.IDuration|null);
                }

                /** Represents a StartTimerCommandAttributes. */
                class StartTimerCommandAttributes implements IStartTimerCommandAttributes {

                    /**
                     * Constructs a new StartTimerCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IStartTimerCommandAttributes);

                    /**
                     * An id for the timer, currently live timers must have different ids. Typically autogenerated
                     * by the SDK.
                     */
                    public timerId: string;

                    /**
                     * How long until the timer fires, producing a `TIMER_FIRED` event.
                     *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public startToFireTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Creates a new StartTimerCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartTimerCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IStartTimerCommandAttributes): temporal.api.command.v1.StartTimerCommandAttributes;

                    /**
                     * Encodes the specified StartTimerCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.StartTimerCommandAttributes.verify|verify} messages.
                     * @param message StartTimerCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IStartTimerCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartTimerCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.StartTimerCommandAttributes.verify|verify} messages.
                     * @param message StartTimerCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IStartTimerCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartTimerCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartTimerCommandAttributes
                     * @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): temporal.api.command.v1.StartTimerCommandAttributes;

                    /**
                     * Decodes a StartTimerCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartTimerCommandAttributes
                     * @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)): temporal.api.command.v1.StartTimerCommandAttributes;

                    /**
                     * Creates a StartTimerCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartTimerCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.StartTimerCommandAttributes;

                    /**
                     * Creates a plain object from a StartTimerCommandAttributes message. Also converts values to other types if specified.
                     * @param message StartTimerCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.StartTimerCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartTimerCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartTimerCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CompleteWorkflowExecutionCommandAttributes. */
                interface ICompleteWorkflowExecutionCommandAttributes {

                    /** CompleteWorkflowExecutionCommandAttributes result */
                    result?: (temporal.api.common.v1.IPayloads|null);
                }

                /** Represents a CompleteWorkflowExecutionCommandAttributes. */
                class CompleteWorkflowExecutionCommandAttributes implements ICompleteWorkflowExecutionCommandAttributes {

                    /**
                     * Constructs a new CompleteWorkflowExecutionCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.ICompleteWorkflowExecutionCommandAttributes);

                    /** CompleteWorkflowExecutionCommandAttributes result. */
                    public result?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Creates a new CompleteWorkflowExecutionCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompleteWorkflowExecutionCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.ICompleteWorkflowExecutionCommandAttributes): temporal.api.command.v1.CompleteWorkflowExecutionCommandAttributes;

                    /**
                     * Encodes the specified CompleteWorkflowExecutionCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.CompleteWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message CompleteWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.ICompleteWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompleteWorkflowExecutionCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.CompleteWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message CompleteWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.ICompleteWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompleteWorkflowExecutionCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompleteWorkflowExecutionCommandAttributes
                     * @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): temporal.api.command.v1.CompleteWorkflowExecutionCommandAttributes;

                    /**
                     * Decodes a CompleteWorkflowExecutionCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompleteWorkflowExecutionCommandAttributes
                     * @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)): temporal.api.command.v1.CompleteWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a CompleteWorkflowExecutionCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompleteWorkflowExecutionCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.CompleteWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a plain object from a CompleteWorkflowExecutionCommandAttributes message. Also converts values to other types if specified.
                     * @param message CompleteWorkflowExecutionCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.CompleteWorkflowExecutionCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompleteWorkflowExecutionCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompleteWorkflowExecutionCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a FailWorkflowExecutionCommandAttributes. */
                interface IFailWorkflowExecutionCommandAttributes {

                    /** FailWorkflowExecutionCommandAttributes failure */
                    failure?: (temporal.api.failure.v1.IFailure|null);
                }

                /** Represents a FailWorkflowExecutionCommandAttributes. */
                class FailWorkflowExecutionCommandAttributes implements IFailWorkflowExecutionCommandAttributes {

                    /**
                     * Constructs a new FailWorkflowExecutionCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IFailWorkflowExecutionCommandAttributes);

                    /** FailWorkflowExecutionCommandAttributes failure. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Creates a new FailWorkflowExecutionCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FailWorkflowExecutionCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IFailWorkflowExecutionCommandAttributes): temporal.api.command.v1.FailWorkflowExecutionCommandAttributes;

                    /**
                     * Encodes the specified FailWorkflowExecutionCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.FailWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message FailWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IFailWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FailWorkflowExecutionCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.FailWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message FailWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IFailWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FailWorkflowExecutionCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FailWorkflowExecutionCommandAttributes
                     * @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): temporal.api.command.v1.FailWorkflowExecutionCommandAttributes;

                    /**
                     * Decodes a FailWorkflowExecutionCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FailWorkflowExecutionCommandAttributes
                     * @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)): temporal.api.command.v1.FailWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a FailWorkflowExecutionCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FailWorkflowExecutionCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.FailWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a plain object from a FailWorkflowExecutionCommandAttributes message. Also converts values to other types if specified.
                     * @param message FailWorkflowExecutionCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.FailWorkflowExecutionCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FailWorkflowExecutionCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FailWorkflowExecutionCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CancelTimerCommandAttributes. */
                interface ICancelTimerCommandAttributes {

                    /** The same timer id from the start timer command */
                    timerId?: (string|null);
                }

                /** Represents a CancelTimerCommandAttributes. */
                class CancelTimerCommandAttributes implements ICancelTimerCommandAttributes {

                    /**
                     * Constructs a new CancelTimerCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.ICancelTimerCommandAttributes);

                    /** The same timer id from the start timer command */
                    public timerId: string;

                    /**
                     * Creates a new CancelTimerCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CancelTimerCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.ICancelTimerCommandAttributes): temporal.api.command.v1.CancelTimerCommandAttributes;

                    /**
                     * Encodes the specified CancelTimerCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.CancelTimerCommandAttributes.verify|verify} messages.
                     * @param message CancelTimerCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.ICancelTimerCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CancelTimerCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.CancelTimerCommandAttributes.verify|verify} messages.
                     * @param message CancelTimerCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.ICancelTimerCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CancelTimerCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CancelTimerCommandAttributes
                     * @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): temporal.api.command.v1.CancelTimerCommandAttributes;

                    /**
                     * Decodes a CancelTimerCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CancelTimerCommandAttributes
                     * @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)): temporal.api.command.v1.CancelTimerCommandAttributes;

                    /**
                     * Creates a CancelTimerCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CancelTimerCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.CancelTimerCommandAttributes;

                    /**
                     * Creates a plain object from a CancelTimerCommandAttributes message. Also converts values to other types if specified.
                     * @param message CancelTimerCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.CancelTimerCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CancelTimerCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CancelTimerCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CancelWorkflowExecutionCommandAttributes. */
                interface ICancelWorkflowExecutionCommandAttributes {

                    /** CancelWorkflowExecutionCommandAttributes details */
                    details?: (temporal.api.common.v1.IPayloads|null);
                }

                /** Represents a CancelWorkflowExecutionCommandAttributes. */
                class CancelWorkflowExecutionCommandAttributes implements ICancelWorkflowExecutionCommandAttributes {

                    /**
                     * Constructs a new CancelWorkflowExecutionCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.ICancelWorkflowExecutionCommandAttributes);

                    /** CancelWorkflowExecutionCommandAttributes details. */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Creates a new CancelWorkflowExecutionCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CancelWorkflowExecutionCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.ICancelWorkflowExecutionCommandAttributes): temporal.api.command.v1.CancelWorkflowExecutionCommandAttributes;

                    /**
                     * Encodes the specified CancelWorkflowExecutionCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.CancelWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message CancelWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.ICancelWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CancelWorkflowExecutionCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.CancelWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message CancelWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.ICancelWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CancelWorkflowExecutionCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CancelWorkflowExecutionCommandAttributes
                     * @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): temporal.api.command.v1.CancelWorkflowExecutionCommandAttributes;

                    /**
                     * Decodes a CancelWorkflowExecutionCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CancelWorkflowExecutionCommandAttributes
                     * @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)): temporal.api.command.v1.CancelWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a CancelWorkflowExecutionCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CancelWorkflowExecutionCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.CancelWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a plain object from a CancelWorkflowExecutionCommandAttributes message. Also converts values to other types if specified.
                     * @param message CancelWorkflowExecutionCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.CancelWorkflowExecutionCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CancelWorkflowExecutionCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CancelWorkflowExecutionCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RequestCancelExternalWorkflowExecutionCommandAttributes. */
                interface IRequestCancelExternalWorkflowExecutionCommandAttributes {

                    /** RequestCancelExternalWorkflowExecutionCommandAttributes namespace */
                    namespace?: (string|null);

                    /** RequestCancelExternalWorkflowExecutionCommandAttributes workflowId */
                    workflowId?: (string|null);

                    /** RequestCancelExternalWorkflowExecutionCommandAttributes runId */
                    runId?: (string|null);

                    /** Deprecated. */
                    control?: (string|null);

                    /**
                     * Set this to true if the workflow being cancelled is a child of the workflow originating this
                     * command. The request will be rejected if it is set to true and the target workflow is *not*
                     * a child of the requesting workflow.
                     */
                    childWorkflowOnly?: (boolean|null);

                    /** Reason for requesting the cancellation */
                    reason?: (string|null);
                }

                /** Represents a RequestCancelExternalWorkflowExecutionCommandAttributes. */
                class RequestCancelExternalWorkflowExecutionCommandAttributes implements IRequestCancelExternalWorkflowExecutionCommandAttributes {

                    /**
                     * Constructs a new RequestCancelExternalWorkflowExecutionCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IRequestCancelExternalWorkflowExecutionCommandAttributes);

                    /** RequestCancelExternalWorkflowExecutionCommandAttributes namespace. */
                    public namespace: string;

                    /** RequestCancelExternalWorkflowExecutionCommandAttributes workflowId. */
                    public workflowId: string;

                    /** RequestCancelExternalWorkflowExecutionCommandAttributes runId. */
                    public runId: string;

                    /** Deprecated. */
                    public control: string;

                    /**
                     * Set this to true if the workflow being cancelled is a child of the workflow originating this
                     * command. The request will be rejected if it is set to true and the target workflow is *not*
                     * a child of the requesting workflow.
                     */
                    public childWorkflowOnly: boolean;

                    /** Reason for requesting the cancellation */
                    public reason: string;

                    /**
                     * Creates a new RequestCancelExternalWorkflowExecutionCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RequestCancelExternalWorkflowExecutionCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IRequestCancelExternalWorkflowExecutionCommandAttributes): temporal.api.command.v1.RequestCancelExternalWorkflowExecutionCommandAttributes;

                    /**
                     * Encodes the specified RequestCancelExternalWorkflowExecutionCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.RequestCancelExternalWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message RequestCancelExternalWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IRequestCancelExternalWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RequestCancelExternalWorkflowExecutionCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.RequestCancelExternalWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message RequestCancelExternalWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IRequestCancelExternalWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RequestCancelExternalWorkflowExecutionCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RequestCancelExternalWorkflowExecutionCommandAttributes
                     * @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): temporal.api.command.v1.RequestCancelExternalWorkflowExecutionCommandAttributes;

                    /**
                     * Decodes a RequestCancelExternalWorkflowExecutionCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RequestCancelExternalWorkflowExecutionCommandAttributes
                     * @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)): temporal.api.command.v1.RequestCancelExternalWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a RequestCancelExternalWorkflowExecutionCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RequestCancelExternalWorkflowExecutionCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.RequestCancelExternalWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a plain object from a RequestCancelExternalWorkflowExecutionCommandAttributes message. Also converts values to other types if specified.
                     * @param message RequestCancelExternalWorkflowExecutionCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.RequestCancelExternalWorkflowExecutionCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RequestCancelExternalWorkflowExecutionCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RequestCancelExternalWorkflowExecutionCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SignalExternalWorkflowExecutionCommandAttributes. */
                interface ISignalExternalWorkflowExecutionCommandAttributes {

                    /** SignalExternalWorkflowExecutionCommandAttributes namespace */
                    namespace?: (string|null);

                    /** SignalExternalWorkflowExecutionCommandAttributes execution */
                    execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The workflow author-defined name of the signal to send to the workflow. */
                    signalName?: (string|null);

                    /** Serialized value(s) to provide with the signal. */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** Deprecated */
                    control?: (string|null);

                    /**
                     * Set this to true if the workflow being cancelled is a child of the workflow originating this
                     * command. The request will be rejected if it is set to true and the target workflow is *not*
                     * a child of the requesting workflow.
                     */
                    childWorkflowOnly?: (boolean|null);

                    /**
                     * Headers that are passed by the workflow that is sending a signal to the external
                     * workflow that is receiving this signal.
                     */
                    header?: (temporal.api.common.v1.IHeader|null);
                }

                /** Represents a SignalExternalWorkflowExecutionCommandAttributes. */
                class SignalExternalWorkflowExecutionCommandAttributes implements ISignalExternalWorkflowExecutionCommandAttributes {

                    /**
                     * Constructs a new SignalExternalWorkflowExecutionCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.ISignalExternalWorkflowExecutionCommandAttributes);

                    /** SignalExternalWorkflowExecutionCommandAttributes namespace. */
                    public namespace: string;

                    /** SignalExternalWorkflowExecutionCommandAttributes execution. */
                    public execution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** The workflow author-defined name of the signal to send to the workflow. */
                    public signalName: string;

                    /** Serialized value(s) to provide with the signal. */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** Deprecated */
                    public control: string;

                    /**
                     * Set this to true if the workflow being cancelled is a child of the workflow originating this
                     * command. The request will be rejected if it is set to true and the target workflow is *not*
                     * a child of the requesting workflow.
                     */
                    public childWorkflowOnly: boolean;

                    /**
                     * Headers that are passed by the workflow that is sending a signal to the external
                     * workflow that is receiving this signal.
                     */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Creates a new SignalExternalWorkflowExecutionCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SignalExternalWorkflowExecutionCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.ISignalExternalWorkflowExecutionCommandAttributes): temporal.api.command.v1.SignalExternalWorkflowExecutionCommandAttributes;

                    /**
                     * Encodes the specified SignalExternalWorkflowExecutionCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.SignalExternalWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message SignalExternalWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.ISignalExternalWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SignalExternalWorkflowExecutionCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.SignalExternalWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message SignalExternalWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.ISignalExternalWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SignalExternalWorkflowExecutionCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SignalExternalWorkflowExecutionCommandAttributes
                     * @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): temporal.api.command.v1.SignalExternalWorkflowExecutionCommandAttributes;

                    /**
                     * Decodes a SignalExternalWorkflowExecutionCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SignalExternalWorkflowExecutionCommandAttributes
                     * @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)): temporal.api.command.v1.SignalExternalWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a SignalExternalWorkflowExecutionCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SignalExternalWorkflowExecutionCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.SignalExternalWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a plain object from a SignalExternalWorkflowExecutionCommandAttributes message. Also converts values to other types if specified.
                     * @param message SignalExternalWorkflowExecutionCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.SignalExternalWorkflowExecutionCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SignalExternalWorkflowExecutionCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SignalExternalWorkflowExecutionCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpsertWorkflowSearchAttributesCommandAttributes. */
                interface IUpsertWorkflowSearchAttributesCommandAttributes {

                    /** UpsertWorkflowSearchAttributesCommandAttributes searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);
                }

                /** Represents an UpsertWorkflowSearchAttributesCommandAttributes. */
                class UpsertWorkflowSearchAttributesCommandAttributes implements IUpsertWorkflowSearchAttributesCommandAttributes {

                    /**
                     * Constructs a new UpsertWorkflowSearchAttributesCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IUpsertWorkflowSearchAttributesCommandAttributes);

                    /** UpsertWorkflowSearchAttributesCommandAttributes searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * Creates a new UpsertWorkflowSearchAttributesCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpsertWorkflowSearchAttributesCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IUpsertWorkflowSearchAttributesCommandAttributes): temporal.api.command.v1.UpsertWorkflowSearchAttributesCommandAttributes;

                    /**
                     * Encodes the specified UpsertWorkflowSearchAttributesCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.UpsertWorkflowSearchAttributesCommandAttributes.verify|verify} messages.
                     * @param message UpsertWorkflowSearchAttributesCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IUpsertWorkflowSearchAttributesCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpsertWorkflowSearchAttributesCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.UpsertWorkflowSearchAttributesCommandAttributes.verify|verify} messages.
                     * @param message UpsertWorkflowSearchAttributesCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IUpsertWorkflowSearchAttributesCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpsertWorkflowSearchAttributesCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpsertWorkflowSearchAttributesCommandAttributes
                     * @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): temporal.api.command.v1.UpsertWorkflowSearchAttributesCommandAttributes;

                    /**
                     * Decodes an UpsertWorkflowSearchAttributesCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpsertWorkflowSearchAttributesCommandAttributes
                     * @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)): temporal.api.command.v1.UpsertWorkflowSearchAttributesCommandAttributes;

                    /**
                     * Creates an UpsertWorkflowSearchAttributesCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpsertWorkflowSearchAttributesCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.UpsertWorkflowSearchAttributesCommandAttributes;

                    /**
                     * Creates a plain object from an UpsertWorkflowSearchAttributesCommandAttributes message. Also converts values to other types if specified.
                     * @param message UpsertWorkflowSearchAttributesCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.UpsertWorkflowSearchAttributesCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpsertWorkflowSearchAttributesCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpsertWorkflowSearchAttributesCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ModifyWorkflowPropertiesCommandAttributes. */
                interface IModifyWorkflowPropertiesCommandAttributes {

                    /**
                     * If set, update the workflow memo with the provided values. The values will be merged with
                     * the existing memo. If the user wants to delete values, a default/empty Payload should be
                     * used as the value for the key being deleted.
                     */
                    upsertedMemo?: (temporal.api.common.v1.IMemo|null);
                }

                /** Represents a ModifyWorkflowPropertiesCommandAttributes. */
                class ModifyWorkflowPropertiesCommandAttributes implements IModifyWorkflowPropertiesCommandAttributes {

                    /**
                     * Constructs a new ModifyWorkflowPropertiesCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IModifyWorkflowPropertiesCommandAttributes);

                    /**
                     * If set, update the workflow memo with the provided values. The values will be merged with
                     * the existing memo. If the user wants to delete values, a default/empty Payload should be
                     * used as the value for the key being deleted.
                     */
                    public upsertedMemo?: (temporal.api.common.v1.IMemo|null);

                    /**
                     * Creates a new ModifyWorkflowPropertiesCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ModifyWorkflowPropertiesCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IModifyWorkflowPropertiesCommandAttributes): temporal.api.command.v1.ModifyWorkflowPropertiesCommandAttributes;

                    /**
                     * Encodes the specified ModifyWorkflowPropertiesCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.ModifyWorkflowPropertiesCommandAttributes.verify|verify} messages.
                     * @param message ModifyWorkflowPropertiesCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IModifyWorkflowPropertiesCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ModifyWorkflowPropertiesCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.ModifyWorkflowPropertiesCommandAttributes.verify|verify} messages.
                     * @param message ModifyWorkflowPropertiesCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IModifyWorkflowPropertiesCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ModifyWorkflowPropertiesCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ModifyWorkflowPropertiesCommandAttributes
                     * @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): temporal.api.command.v1.ModifyWorkflowPropertiesCommandAttributes;

                    /**
                     * Decodes a ModifyWorkflowPropertiesCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ModifyWorkflowPropertiesCommandAttributes
                     * @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)): temporal.api.command.v1.ModifyWorkflowPropertiesCommandAttributes;

                    /**
                     * Creates a ModifyWorkflowPropertiesCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ModifyWorkflowPropertiesCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.ModifyWorkflowPropertiesCommandAttributes;

                    /**
                     * Creates a plain object from a ModifyWorkflowPropertiesCommandAttributes message. Also converts values to other types if specified.
                     * @param message ModifyWorkflowPropertiesCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.ModifyWorkflowPropertiesCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ModifyWorkflowPropertiesCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ModifyWorkflowPropertiesCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RecordMarkerCommandAttributes. */
                interface IRecordMarkerCommandAttributes {

                    /** RecordMarkerCommandAttributes markerName */
                    markerName?: (string|null);

                    /** RecordMarkerCommandAttributes details */
                    details?: ({ [k: string]: temporal.api.common.v1.IPayloads }|null);

                    /** RecordMarkerCommandAttributes header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** RecordMarkerCommandAttributes failure */
                    failure?: (temporal.api.failure.v1.IFailure|null);
                }

                /** Represents a RecordMarkerCommandAttributes. */
                class RecordMarkerCommandAttributes implements IRecordMarkerCommandAttributes {

                    /**
                     * Constructs a new RecordMarkerCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IRecordMarkerCommandAttributes);

                    /** RecordMarkerCommandAttributes markerName. */
                    public markerName: string;

                    /** RecordMarkerCommandAttributes details. */
                    public details: { [k: string]: temporal.api.common.v1.IPayloads };

                    /** RecordMarkerCommandAttributes header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** RecordMarkerCommandAttributes failure. */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Creates a new RecordMarkerCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RecordMarkerCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IRecordMarkerCommandAttributes): temporal.api.command.v1.RecordMarkerCommandAttributes;

                    /**
                     * Encodes the specified RecordMarkerCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.RecordMarkerCommandAttributes.verify|verify} messages.
                     * @param message RecordMarkerCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IRecordMarkerCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RecordMarkerCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.RecordMarkerCommandAttributes.verify|verify} messages.
                     * @param message RecordMarkerCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IRecordMarkerCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RecordMarkerCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RecordMarkerCommandAttributes
                     * @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): temporal.api.command.v1.RecordMarkerCommandAttributes;

                    /**
                     * Decodes a RecordMarkerCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RecordMarkerCommandAttributes
                     * @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)): temporal.api.command.v1.RecordMarkerCommandAttributes;

                    /**
                     * Creates a RecordMarkerCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RecordMarkerCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.RecordMarkerCommandAttributes;

                    /**
                     * Creates a plain object from a RecordMarkerCommandAttributes message. Also converts values to other types if specified.
                     * @param message RecordMarkerCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.RecordMarkerCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RecordMarkerCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RecordMarkerCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ContinueAsNewWorkflowExecutionCommandAttributes. */
                interface IContinueAsNewWorkflowExecutionCommandAttributes {

                    /** ContinueAsNewWorkflowExecutionCommandAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes input */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** Timeout of a single workflow run. */
                    workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** How long the workflow start will be delayed - not really a "backoff" in the traditional sense. */
                    backoffStartInterval?: (google.protobuf.IDuration|null);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes retryPolicy */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Should be removed */
                    initiator?: (temporal.api.enums.v1.ContinueAsNewInitiator|null);

                    /** Should be removed */
                    failure?: (temporal.api.failure.v1.IFailure|null);

                    /** Should be removed */
                    lastCompletionResult?: (temporal.api.common.v1.IPayloads|null);

                    /** Should be removed. Not necessarily unused but unclear and not exposed by SDKs. */
                    cronSchedule?: (string|null);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes memo */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * If this is set, the new execution inherits the Build ID of the current execution. Otherwise,
                     * the assignment rules will be used to independently assign a Build ID to the new execution.
                     * Deprecated. Only considered for versioning v0.2.
                     */
                    inheritBuildId?: (boolean|null);

                    /**
                     * Experimental. Optionally decide the versioning behavior that the first task of the new run should use.
                     * For example, choose to AutoUpgrade on continue-as-new instead of inheriting the pinned version
                     * of the previous run.
                     */
                    initialVersioningBehavior?: (temporal.api.enums.v1.ContinueAsNewVersioningBehavior|null);
                }

                /** Represents a ContinueAsNewWorkflowExecutionCommandAttributes. */
                class ContinueAsNewWorkflowExecutionCommandAttributes implements IContinueAsNewWorkflowExecutionCommandAttributes {

                    /**
                     * Constructs a new ContinueAsNewWorkflowExecutionCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IContinueAsNewWorkflowExecutionCommandAttributes);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes input. */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** Timeout of a single workflow run. */
                    public workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    public workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** How long the workflow start will be delayed - not really a "backoff" in the traditional sense. */
                    public backoffStartInterval?: (google.protobuf.IDuration|null);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes retryPolicy. */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Should be removed */
                    public initiator: temporal.api.enums.v1.ContinueAsNewInitiator;

                    /** Should be removed */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /** Should be removed */
                    public lastCompletionResult?: (temporal.api.common.v1.IPayloads|null);

                    /** Should be removed. Not necessarily unused but unclear and not exposed by SDKs. */
                    public cronSchedule: string;

                    /** ContinueAsNewWorkflowExecutionCommandAttributes header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes memo. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** ContinueAsNewWorkflowExecutionCommandAttributes searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * If this is set, the new execution inherits the Build ID of the current execution. Otherwise,
                     * the assignment rules will be used to independently assign a Build ID to the new execution.
                     * Deprecated. Only considered for versioning v0.2.
                     */
                    public inheritBuildId: boolean;

                    /**
                     * Experimental. Optionally decide the versioning behavior that the first task of the new run should use.
                     * For example, choose to AutoUpgrade on continue-as-new instead of inheriting the pinned version
                     * of the previous run.
                     */
                    public initialVersioningBehavior: temporal.api.enums.v1.ContinueAsNewVersioningBehavior;

                    /**
                     * Creates a new ContinueAsNewWorkflowExecutionCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ContinueAsNewWorkflowExecutionCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IContinueAsNewWorkflowExecutionCommandAttributes): temporal.api.command.v1.ContinueAsNewWorkflowExecutionCommandAttributes;

                    /**
                     * Encodes the specified ContinueAsNewWorkflowExecutionCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.ContinueAsNewWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message ContinueAsNewWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IContinueAsNewWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ContinueAsNewWorkflowExecutionCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.ContinueAsNewWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message ContinueAsNewWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IContinueAsNewWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ContinueAsNewWorkflowExecutionCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ContinueAsNewWorkflowExecutionCommandAttributes
                     * @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): temporal.api.command.v1.ContinueAsNewWorkflowExecutionCommandAttributes;

                    /**
                     * Decodes a ContinueAsNewWorkflowExecutionCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ContinueAsNewWorkflowExecutionCommandAttributes
                     * @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)): temporal.api.command.v1.ContinueAsNewWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a ContinueAsNewWorkflowExecutionCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ContinueAsNewWorkflowExecutionCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.ContinueAsNewWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a plain object from a ContinueAsNewWorkflowExecutionCommandAttributes message. Also converts values to other types if specified.
                     * @param message ContinueAsNewWorkflowExecutionCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.ContinueAsNewWorkflowExecutionCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ContinueAsNewWorkflowExecutionCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ContinueAsNewWorkflowExecutionCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartChildWorkflowExecutionCommandAttributes. */
                interface IStartChildWorkflowExecutionCommandAttributes {

                    /** StartChildWorkflowExecutionCommandAttributes namespace */
                    namespace?: (string|null);

                    /** StartChildWorkflowExecutionCommandAttributes workflowId */
                    workflowId?: (string|null);

                    /** StartChildWorkflowExecutionCommandAttributes workflowType */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** StartChildWorkflowExecutionCommandAttributes taskQueue */
                    taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** StartChildWorkflowExecutionCommandAttributes input */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new. */
                    workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run. */
                    workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** Default: PARENT_CLOSE_POLICY_TERMINATE. */
                    parentClosePolicy?: (temporal.api.enums.v1.ParentClosePolicy|null);

                    /** StartChildWorkflowExecutionCommandAttributes control */
                    control?: (string|null);

                    /** Default: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE. */
                    workflowIdReusePolicy?: (temporal.api.enums.v1.WorkflowIdReusePolicy|null);

                    /** StartChildWorkflowExecutionCommandAttributes retryPolicy */
                    retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Establish a cron schedule for the child workflow. */
                    cronSchedule?: (string|null);

                    /** StartChildWorkflowExecutionCommandAttributes header */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** StartChildWorkflowExecutionCommandAttributes memo */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** StartChildWorkflowExecutionCommandAttributes searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * If this is set, the child workflow inherits the Build ID of the parent. Otherwise, the assignment
                     * rules of the child's Task Queue will be used to independently assign a Build ID to it.
                     * Deprecated. Only considered for versioning v0.2.
                     */
                    inheritBuildId?: (boolean|null);

                    /**
                     * Priority metadata. If this message is not present, or any fields are not
                     * present, they inherit the values from the workflow.
                     */
                    priority?: (temporal.api.common.v1.IPriority|null);
                }

                /** Represents a StartChildWorkflowExecutionCommandAttributes. */
                class StartChildWorkflowExecutionCommandAttributes implements IStartChildWorkflowExecutionCommandAttributes {

                    /**
                     * Constructs a new StartChildWorkflowExecutionCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IStartChildWorkflowExecutionCommandAttributes);

                    /** StartChildWorkflowExecutionCommandAttributes namespace. */
                    public namespace: string;

                    /** StartChildWorkflowExecutionCommandAttributes workflowId. */
                    public workflowId: string;

                    /** StartChildWorkflowExecutionCommandAttributes workflowType. */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** StartChildWorkflowExecutionCommandAttributes taskQueue. */
                    public taskQueue?: (temporal.api.taskqueue.v1.ITaskQueue|null);

                    /** StartChildWorkflowExecutionCommandAttributes input. */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /** Total workflow execution timeout including retries and continue as new. */
                    public workflowExecutionTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow run. */
                    public workflowRunTimeout?: (google.protobuf.IDuration|null);

                    /** Timeout of a single workflow task. */
                    public workflowTaskTimeout?: (google.protobuf.IDuration|null);

                    /** Default: PARENT_CLOSE_POLICY_TERMINATE. */
                    public parentClosePolicy: temporal.api.enums.v1.ParentClosePolicy;

                    /** StartChildWorkflowExecutionCommandAttributes control. */
                    public control: string;

                    /** Default: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE. */
                    public workflowIdReusePolicy: temporal.api.enums.v1.WorkflowIdReusePolicy;

                    /** StartChildWorkflowExecutionCommandAttributes retryPolicy. */
                    public retryPolicy?: (temporal.api.common.v1.IRetryPolicy|null);

                    /** Establish a cron schedule for the child workflow. */
                    public cronSchedule: string;

                    /** StartChildWorkflowExecutionCommandAttributes header. */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** StartChildWorkflowExecutionCommandAttributes memo. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** StartChildWorkflowExecutionCommandAttributes searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /**
                     * If this is set, the child workflow inherits the Build ID of the parent. Otherwise, the assignment
                     * rules of the child's Task Queue will be used to independently assign a Build ID to it.
                     * Deprecated. Only considered for versioning v0.2.
                     */
                    public inheritBuildId: boolean;

                    /**
                     * Priority metadata. If this message is not present, or any fields are not
                     * present, they inherit the values from the workflow.
                     */
                    public priority?: (temporal.api.common.v1.IPriority|null);

                    /**
                     * Creates a new StartChildWorkflowExecutionCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartChildWorkflowExecutionCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IStartChildWorkflowExecutionCommandAttributes): temporal.api.command.v1.StartChildWorkflowExecutionCommandAttributes;

                    /**
                     * Encodes the specified StartChildWorkflowExecutionCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.StartChildWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message StartChildWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IStartChildWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartChildWorkflowExecutionCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.StartChildWorkflowExecutionCommandAttributes.verify|verify} messages.
                     * @param message StartChildWorkflowExecutionCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IStartChildWorkflowExecutionCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartChildWorkflowExecutionCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartChildWorkflowExecutionCommandAttributes
                     * @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): temporal.api.command.v1.StartChildWorkflowExecutionCommandAttributes;

                    /**
                     * Decodes a StartChildWorkflowExecutionCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartChildWorkflowExecutionCommandAttributes
                     * @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)): temporal.api.command.v1.StartChildWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a StartChildWorkflowExecutionCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartChildWorkflowExecutionCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.StartChildWorkflowExecutionCommandAttributes;

                    /**
                     * Creates a plain object from a StartChildWorkflowExecutionCommandAttributes message. Also converts values to other types if specified.
                     * @param message StartChildWorkflowExecutionCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.StartChildWorkflowExecutionCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartChildWorkflowExecutionCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartChildWorkflowExecutionCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProtocolMessageCommandAttributes. */
                interface IProtocolMessageCommandAttributes {

                    /** The message ID of the message to which this command is a pointer. */
                    messageId?: (string|null);
                }

                /** Represents a ProtocolMessageCommandAttributes. */
                class ProtocolMessageCommandAttributes implements IProtocolMessageCommandAttributes {

                    /**
                     * Constructs a new ProtocolMessageCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IProtocolMessageCommandAttributes);

                    /** The message ID of the message to which this command is a pointer. */
                    public messageId: string;

                    /**
                     * Creates a new ProtocolMessageCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProtocolMessageCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IProtocolMessageCommandAttributes): temporal.api.command.v1.ProtocolMessageCommandAttributes;

                    /**
                     * Encodes the specified ProtocolMessageCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.ProtocolMessageCommandAttributes.verify|verify} messages.
                     * @param message ProtocolMessageCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IProtocolMessageCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProtocolMessageCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.ProtocolMessageCommandAttributes.verify|verify} messages.
                     * @param message ProtocolMessageCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IProtocolMessageCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProtocolMessageCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProtocolMessageCommandAttributes
                     * @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): temporal.api.command.v1.ProtocolMessageCommandAttributes;

                    /**
                     * Decodes a ProtocolMessageCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProtocolMessageCommandAttributes
                     * @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)): temporal.api.command.v1.ProtocolMessageCommandAttributes;

                    /**
                     * Creates a ProtocolMessageCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProtocolMessageCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.ProtocolMessageCommandAttributes;

                    /**
                     * Creates a plain object from a ProtocolMessageCommandAttributes message. Also converts values to other types if specified.
                     * @param message ProtocolMessageCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.ProtocolMessageCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProtocolMessageCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProtocolMessageCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ScheduleNexusOperationCommandAttributes. */
                interface IScheduleNexusOperationCommandAttributes {

                    /** Endpoint name, must exist in the endpoint registry or this command will fail. */
                    endpoint?: (string|null);

                    /** Service name. */
                    service?: (string|null);

                    /** Operation name. */
                    operation?: (string|null);

                    /**
                     * Input for the operation. The server converts this into Nexus request content and the appropriate content headers
                     * internally when sending the StartOperation request. On the handler side, if it is also backed by Temporal, the
                     * content is transformed back to the original Payload sent in this command.
                     */
                    input?: (temporal.api.common.v1.IPayload|null);

                    /**
                     * Schedule-to-close timeout for this operation.
                     * Indicates how long the caller is willing to wait for operation completion.
                     * Calls are retried internally by the server.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Header to attach to the Nexus request.
                     * Users are responsible for encrypting sensitive data in this header as it is stored in workflow history and
                     * transmitted to external services as-is.
                     * This is useful for propagating tracing information.
                     * Note these headers are not the same as Temporal headers on internal activities and child workflows, these are
                     * transmitted to Nexus operations that may be external and are not traditional payloads.
                     */
                    nexusHeader?: ({ [k: string]: string }|null);

                    /**
                     * Schedule-to-start timeout for this operation.
                     * Indicates how long the caller is willing to wait for the operation to be started (or completed if synchronous)
                     * by the handler. If the operation is not started within this timeout, it will fail with
                     * TIMEOUT_TYPE_SCHEDULE_TO_START.
                     * If not set or zero, no schedule-to-start timeout is enforced.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     * Requires server version 1.31.0 or later.
                     */
                    scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Start-to-close timeout for this operation.
                     * Indicates how long the caller is willing to wait for an asynchronous operation to complete after it has been
                     * started. If the operation does not complete within this timeout after starting, it will fail with
                     * TIMEOUT_TYPE_START_TO_CLOSE.
                     * Only applies to asynchronous operations. Synchronous operations ignore this timeout.
                     * If not set or zero, no start-to-close timeout is enforced.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     * Requires server version 1.31.0 or later.
                     */
                    startToCloseTimeout?: (google.protobuf.IDuration|null);
                }

                /** Represents a ScheduleNexusOperationCommandAttributes. */
                class ScheduleNexusOperationCommandAttributes implements IScheduleNexusOperationCommandAttributes {

                    /**
                     * Constructs a new ScheduleNexusOperationCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IScheduleNexusOperationCommandAttributes);

                    /** Endpoint name, must exist in the endpoint registry or this command will fail. */
                    public endpoint: string;

                    /** Service name. */
                    public service: string;

                    /** Operation name. */
                    public operation: string;

                    /**
                     * Input for the operation. The server converts this into Nexus request content and the appropriate content headers
                     * internally when sending the StartOperation request. On the handler side, if it is also backed by Temporal, the
                     * content is transformed back to the original Payload sent in this command.
                     */
                    public input?: (temporal.api.common.v1.IPayload|null);

                    /**
                     * Schedule-to-close timeout for this operation.
                     * Indicates how long the caller is willing to wait for operation completion.
                     * Calls are retried internally by the server.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     */
                    public scheduleToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Header to attach to the Nexus request.
                     * Users are responsible for encrypting sensitive data in this header as it is stored in workflow history and
                     * transmitted to external services as-is.
                     * This is useful for propagating tracing information.
                     * Note these headers are not the same as Temporal headers on internal activities and child workflows, these are
                     * transmitted to Nexus operations that may be external and are not traditional payloads.
                     */
                    public nexusHeader: { [k: string]: string };

                    /**
                     * Schedule-to-start timeout for this operation.
                     * Indicates how long the caller is willing to wait for the operation to be started (or completed if synchronous)
                     * by the handler. If the operation is not started within this timeout, it will fail with
                     * TIMEOUT_TYPE_SCHEDULE_TO_START.
                     * If not set or zero, no schedule-to-start timeout is enforced.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     * Requires server version 1.31.0 or later.
                     */
                    public scheduleToStartTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Start-to-close timeout for this operation.
                     * Indicates how long the caller is willing to wait for an asynchronous operation to complete after it has been
                     * started. If the operation does not complete within this timeout after starting, it will fail with
                     * TIMEOUT_TYPE_START_TO_CLOSE.
                     * Only applies to asynchronous operations. Synchronous operations ignore this timeout.
                     * If not set or zero, no start-to-close timeout is enforced.
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: "to" is used to indicate interval. --)
                     * Requires server version 1.31.0 or later.
                     */
                    public startToCloseTimeout?: (google.protobuf.IDuration|null);

                    /**
                     * Creates a new ScheduleNexusOperationCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ScheduleNexusOperationCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IScheduleNexusOperationCommandAttributes): temporal.api.command.v1.ScheduleNexusOperationCommandAttributes;

                    /**
                     * Encodes the specified ScheduleNexusOperationCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.ScheduleNexusOperationCommandAttributes.verify|verify} messages.
                     * @param message ScheduleNexusOperationCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IScheduleNexusOperationCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ScheduleNexusOperationCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.ScheduleNexusOperationCommandAttributes.verify|verify} messages.
                     * @param message ScheduleNexusOperationCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IScheduleNexusOperationCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ScheduleNexusOperationCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ScheduleNexusOperationCommandAttributes
                     * @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): temporal.api.command.v1.ScheduleNexusOperationCommandAttributes;

                    /**
                     * Decodes a ScheduleNexusOperationCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ScheduleNexusOperationCommandAttributes
                     * @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)): temporal.api.command.v1.ScheduleNexusOperationCommandAttributes;

                    /**
                     * Creates a ScheduleNexusOperationCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ScheduleNexusOperationCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.ScheduleNexusOperationCommandAttributes;

                    /**
                     * Creates a plain object from a ScheduleNexusOperationCommandAttributes message. Also converts values to other types if specified.
                     * @param message ScheduleNexusOperationCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.ScheduleNexusOperationCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ScheduleNexusOperationCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ScheduleNexusOperationCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RequestCancelNexusOperationCommandAttributes. */
                interface IRequestCancelNexusOperationCommandAttributes {

                    /**
                     * The `NEXUS_OPERATION_SCHEDULED` event ID (a unique identifier) for the operation to be canceled.
                     * The operation may ignore cancellation and end up with any completion state.
                     */
                    scheduledEventId?: (Long|null);
                }

                /** Represents a RequestCancelNexusOperationCommandAttributes. */
                class RequestCancelNexusOperationCommandAttributes implements IRequestCancelNexusOperationCommandAttributes {

                    /**
                     * Constructs a new RequestCancelNexusOperationCommandAttributes.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.IRequestCancelNexusOperationCommandAttributes);

                    /**
                     * The `NEXUS_OPERATION_SCHEDULED` event ID (a unique identifier) for the operation to be canceled.
                     * The operation may ignore cancellation and end up with any completion state.
                     */
                    public scheduledEventId: Long;

                    /**
                     * Creates a new RequestCancelNexusOperationCommandAttributes instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RequestCancelNexusOperationCommandAttributes instance
                     */
                    public static create(properties?: temporal.api.command.v1.IRequestCancelNexusOperationCommandAttributes): temporal.api.command.v1.RequestCancelNexusOperationCommandAttributes;

                    /**
                     * Encodes the specified RequestCancelNexusOperationCommandAttributes message. Does not implicitly {@link temporal.api.command.v1.RequestCancelNexusOperationCommandAttributes.verify|verify} messages.
                     * @param message RequestCancelNexusOperationCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.IRequestCancelNexusOperationCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RequestCancelNexusOperationCommandAttributes message, length delimited. Does not implicitly {@link temporal.api.command.v1.RequestCancelNexusOperationCommandAttributes.verify|verify} messages.
                     * @param message RequestCancelNexusOperationCommandAttributes message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.IRequestCancelNexusOperationCommandAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RequestCancelNexusOperationCommandAttributes message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RequestCancelNexusOperationCommandAttributes
                     * @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): temporal.api.command.v1.RequestCancelNexusOperationCommandAttributes;

                    /**
                     * Decodes a RequestCancelNexusOperationCommandAttributes message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RequestCancelNexusOperationCommandAttributes
                     * @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)): temporal.api.command.v1.RequestCancelNexusOperationCommandAttributes;

                    /**
                     * Creates a RequestCancelNexusOperationCommandAttributes message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RequestCancelNexusOperationCommandAttributes
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.RequestCancelNexusOperationCommandAttributes;

                    /**
                     * Creates a plain object from a RequestCancelNexusOperationCommandAttributes message. Also converts values to other types if specified.
                     * @param message RequestCancelNexusOperationCommandAttributes
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.RequestCancelNexusOperationCommandAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RequestCancelNexusOperationCommandAttributes to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RequestCancelNexusOperationCommandAttributes
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Command. */
                interface ICommand {

                    /** Command commandType */
                    commandType?: (temporal.api.enums.v1.CommandType|null);

                    /**
                     * Metadata on the command. This is sometimes carried over to the history event if one is
                     * created as a result of the command. Most commands won't have this information, and how this
                     * information is used is dependent upon the interface that reads it.
                     *
                     * Current well-known uses:
                     * start_child_workflow_execution_command_attributes - populates
                     * temporal.api.workflow.v1.WorkflowExecutionInfo.user_metadata where the summary and details
                     * are used by user interfaces to show fixed as-of-start workflow summary and details.
                     * start_timer_command_attributes - populates temporal.api.history.v1.HistoryEvent for timer
                     * started where the summary is used to identify the timer.
                     */
                    userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Command scheduleActivityTaskCommandAttributes */
                    scheduleActivityTaskCommandAttributes?: (temporal.api.command.v1.IScheduleActivityTaskCommandAttributes|null);

                    /** Command startTimerCommandAttributes */
                    startTimerCommandAttributes?: (temporal.api.command.v1.IStartTimerCommandAttributes|null);

                    /** Command completeWorkflowExecutionCommandAttributes */
                    completeWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.ICompleteWorkflowExecutionCommandAttributes|null);

                    /** Command failWorkflowExecutionCommandAttributes */
                    failWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.IFailWorkflowExecutionCommandAttributes|null);

                    /** Command requestCancelActivityTaskCommandAttributes */
                    requestCancelActivityTaskCommandAttributes?: (temporal.api.command.v1.IRequestCancelActivityTaskCommandAttributes|null);

                    /** Command cancelTimerCommandAttributes */
                    cancelTimerCommandAttributes?: (temporal.api.command.v1.ICancelTimerCommandAttributes|null);

                    /** Command cancelWorkflowExecutionCommandAttributes */
                    cancelWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.ICancelWorkflowExecutionCommandAttributes|null);

                    /** Command requestCancelExternalWorkflowExecutionCommandAttributes */
                    requestCancelExternalWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.IRequestCancelExternalWorkflowExecutionCommandAttributes|null);

                    /** Command recordMarkerCommandAttributes */
                    recordMarkerCommandAttributes?: (temporal.api.command.v1.IRecordMarkerCommandAttributes|null);

                    /** Command continueAsNewWorkflowExecutionCommandAttributes */
                    continueAsNewWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.IContinueAsNewWorkflowExecutionCommandAttributes|null);

                    /** Command startChildWorkflowExecutionCommandAttributes */
                    startChildWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.IStartChildWorkflowExecutionCommandAttributes|null);

                    /** Command signalExternalWorkflowExecutionCommandAttributes */
                    signalExternalWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.ISignalExternalWorkflowExecutionCommandAttributes|null);

                    /** Command upsertWorkflowSearchAttributesCommandAttributes */
                    upsertWorkflowSearchAttributesCommandAttributes?: (temporal.api.command.v1.IUpsertWorkflowSearchAttributesCommandAttributes|null);

                    /** Command protocolMessageCommandAttributes */
                    protocolMessageCommandAttributes?: (temporal.api.command.v1.IProtocolMessageCommandAttributes|null);

                    /** 16 is available for use - it was used as part of a prototype that never made it into a release */
                    modifyWorkflowPropertiesCommandAttributes?: (temporal.api.command.v1.IModifyWorkflowPropertiesCommandAttributes|null);

                    /** Command scheduleNexusOperationCommandAttributes */
                    scheduleNexusOperationCommandAttributes?: (temporal.api.command.v1.IScheduleNexusOperationCommandAttributes|null);

                    /** Command requestCancelNexusOperationCommandAttributes */
                    requestCancelNexusOperationCommandAttributes?: (temporal.api.command.v1.IRequestCancelNexusOperationCommandAttributes|null);
                }

                /** Represents a Command. */
                class Command implements ICommand {

                    /**
                     * Constructs a new Command.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.command.v1.ICommand);

                    /** Command commandType. */
                    public commandType: temporal.api.enums.v1.CommandType;

                    /**
                     * Metadata on the command. This is sometimes carried over to the history event if one is
                     * created as a result of the command. Most commands won't have this information, and how this
                     * information is used is dependent upon the interface that reads it.
                     *
                     * Current well-known uses:
                     * * start_child_workflow_execution_command_attributes - populates
                     * temporal.api.workflow.v1.WorkflowExecutionInfo.user_metadata where the summary and details
                     * are used by user interfaces to show fixed as-of-start workflow summary and details.
                     * * start_timer_command_attributes - populates temporal.api.history.v1.HistoryEvent for timer
                     * started where the summary is used to identify the timer.
                     */
                    public userMetadata?: (temporal.api.sdk.v1.IUserMetadata|null);

                    /** Command scheduleActivityTaskCommandAttributes. */
                    public scheduleActivityTaskCommandAttributes?: (temporal.api.command.v1.IScheduleActivityTaskCommandAttributes|null);

                    /** Command startTimerCommandAttributes. */
                    public startTimerCommandAttributes?: (temporal.api.command.v1.IStartTimerCommandAttributes|null);

                    /** Command completeWorkflowExecutionCommandAttributes. */
                    public completeWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.ICompleteWorkflowExecutionCommandAttributes|null);

                    /** Command failWorkflowExecutionCommandAttributes. */
                    public failWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.IFailWorkflowExecutionCommandAttributes|null);

                    /** Command requestCancelActivityTaskCommandAttributes. */
                    public requestCancelActivityTaskCommandAttributes?: (temporal.api.command.v1.IRequestCancelActivityTaskCommandAttributes|null);

                    /** Command cancelTimerCommandAttributes. */
                    public cancelTimerCommandAttributes?: (temporal.api.command.v1.ICancelTimerCommandAttributes|null);

                    /** Command cancelWorkflowExecutionCommandAttributes. */
                    public cancelWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.ICancelWorkflowExecutionCommandAttributes|null);

                    /** Command requestCancelExternalWorkflowExecutionCommandAttributes. */
                    public requestCancelExternalWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.IRequestCancelExternalWorkflowExecutionCommandAttributes|null);

                    /** Command recordMarkerCommandAttributes. */
                    public recordMarkerCommandAttributes?: (temporal.api.command.v1.IRecordMarkerCommandAttributes|null);

                    /** Command continueAsNewWorkflowExecutionCommandAttributes. */
                    public continueAsNewWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.IContinueAsNewWorkflowExecutionCommandAttributes|null);

                    /** Command startChildWorkflowExecutionCommandAttributes. */
                    public startChildWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.IStartChildWorkflowExecutionCommandAttributes|null);

                    /** Command signalExternalWorkflowExecutionCommandAttributes. */
                    public signalExternalWorkflowExecutionCommandAttributes?: (temporal.api.command.v1.ISignalExternalWorkflowExecutionCommandAttributes|null);

                    /** Command upsertWorkflowSearchAttributesCommandAttributes. */
                    public upsertWorkflowSearchAttributesCommandAttributes?: (temporal.api.command.v1.IUpsertWorkflowSearchAttributesCommandAttributes|null);

                    /** Command protocolMessageCommandAttributes. */
                    public protocolMessageCommandAttributes?: (temporal.api.command.v1.IProtocolMessageCommandAttributes|null);

                    /** 16 is available for use - it was used as part of a prototype that never made it into a release */
                    public modifyWorkflowPropertiesCommandAttributes?: (temporal.api.command.v1.IModifyWorkflowPropertiesCommandAttributes|null);

                    /** Command scheduleNexusOperationCommandAttributes. */
                    public scheduleNexusOperationCommandAttributes?: (temporal.api.command.v1.IScheduleNexusOperationCommandAttributes|null);

                    /** Command requestCancelNexusOperationCommandAttributes. */
                    public requestCancelNexusOperationCommandAttributes?: (temporal.api.command.v1.IRequestCancelNexusOperationCommandAttributes|null);

                    /** The command details. The type must match that in `command_type`. */
                    public attributes?: ("scheduleActivityTaskCommandAttributes"|"startTimerCommandAttributes"|"completeWorkflowExecutionCommandAttributes"|"failWorkflowExecutionCommandAttributes"|"requestCancelActivityTaskCommandAttributes"|"cancelTimerCommandAttributes"|"cancelWorkflowExecutionCommandAttributes"|"requestCancelExternalWorkflowExecutionCommandAttributes"|"recordMarkerCommandAttributes"|"continueAsNewWorkflowExecutionCommandAttributes"|"startChildWorkflowExecutionCommandAttributes"|"signalExternalWorkflowExecutionCommandAttributes"|"upsertWorkflowSearchAttributesCommandAttributes"|"protocolMessageCommandAttributes"|"modifyWorkflowPropertiesCommandAttributes"|"scheduleNexusOperationCommandAttributes"|"requestCancelNexusOperationCommandAttributes");

                    /**
                     * Creates a new Command instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Command instance
                     */
                    public static create(properties?: temporal.api.command.v1.ICommand): temporal.api.command.v1.Command;

                    /**
                     * Encodes the specified Command message. Does not implicitly {@link temporal.api.command.v1.Command.verify|verify} messages.
                     * @param message Command message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.command.v1.ICommand, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Command message, length delimited. Does not implicitly {@link temporal.api.command.v1.Command.verify|verify} messages.
                     * @param message Command message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.command.v1.ICommand, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Command message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Command
                     * @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): temporal.api.command.v1.Command;

                    /**
                     * Decodes a Command message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Command
                     * @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)): temporal.api.command.v1.Command;

                    /**
                     * Creates a Command message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Command
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.command.v1.Command;

                    /**
                     * Creates a plain object from a Command message. Also converts values to other types if specified.
                     * @param message Command
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.command.v1.Command, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Command to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Command
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace filter. */
        namespace filter {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a WorkflowExecutionFilter. */
                interface IWorkflowExecutionFilter {

                    /** WorkflowExecutionFilter workflowId */
                    workflowId?: (string|null);

                    /** WorkflowExecutionFilter runId */
                    runId?: (string|null);
                }

                /** Represents a WorkflowExecutionFilter. */
                class WorkflowExecutionFilter implements IWorkflowExecutionFilter {

                    /**
                     * Constructs a new WorkflowExecutionFilter.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.filter.v1.IWorkflowExecutionFilter);

                    /** WorkflowExecutionFilter workflowId. */
                    public workflowId: string;

                    /** WorkflowExecutionFilter runId. */
                    public runId: string;

                    /**
                     * Creates a new WorkflowExecutionFilter instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionFilter instance
                     */
                    public static create(properties?: temporal.api.filter.v1.IWorkflowExecutionFilter): temporal.api.filter.v1.WorkflowExecutionFilter;

                    /**
                     * Encodes the specified WorkflowExecutionFilter message. Does not implicitly {@link temporal.api.filter.v1.WorkflowExecutionFilter.verify|verify} messages.
                     * @param message WorkflowExecutionFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.filter.v1.IWorkflowExecutionFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionFilter message, length delimited. Does not implicitly {@link temporal.api.filter.v1.WorkflowExecutionFilter.verify|verify} messages.
                     * @param message WorkflowExecutionFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.filter.v1.IWorkflowExecutionFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionFilter message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionFilter
                     * @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): temporal.api.filter.v1.WorkflowExecutionFilter;

                    /**
                     * Decodes a WorkflowExecutionFilter message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionFilter
                     * @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)): temporal.api.filter.v1.WorkflowExecutionFilter;

                    /**
                     * Creates a WorkflowExecutionFilter message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionFilter
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.filter.v1.WorkflowExecutionFilter;

                    /**
                     * Creates a plain object from a WorkflowExecutionFilter message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionFilter
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.filter.v1.WorkflowExecutionFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionFilter to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionFilter
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowTypeFilter. */
                interface IWorkflowTypeFilter {

                    /** WorkflowTypeFilter name */
                    name?: (string|null);
                }

                /** Represents a WorkflowTypeFilter. */
                class WorkflowTypeFilter implements IWorkflowTypeFilter {

                    /**
                     * Constructs a new WorkflowTypeFilter.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.filter.v1.IWorkflowTypeFilter);

                    /** WorkflowTypeFilter name. */
                    public name: string;

                    /**
                     * Creates a new WorkflowTypeFilter instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowTypeFilter instance
                     */
                    public static create(properties?: temporal.api.filter.v1.IWorkflowTypeFilter): temporal.api.filter.v1.WorkflowTypeFilter;

                    /**
                     * Encodes the specified WorkflowTypeFilter message. Does not implicitly {@link temporal.api.filter.v1.WorkflowTypeFilter.verify|verify} messages.
                     * @param message WorkflowTypeFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.filter.v1.IWorkflowTypeFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowTypeFilter message, length delimited. Does not implicitly {@link temporal.api.filter.v1.WorkflowTypeFilter.verify|verify} messages.
                     * @param message WorkflowTypeFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.filter.v1.IWorkflowTypeFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowTypeFilter message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowTypeFilter
                     * @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): temporal.api.filter.v1.WorkflowTypeFilter;

                    /**
                     * Decodes a WorkflowTypeFilter message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowTypeFilter
                     * @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)): temporal.api.filter.v1.WorkflowTypeFilter;

                    /**
                     * Creates a WorkflowTypeFilter message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowTypeFilter
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.filter.v1.WorkflowTypeFilter;

                    /**
                     * Creates a plain object from a WorkflowTypeFilter message. Also converts values to other types if specified.
                     * @param message WorkflowTypeFilter
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.filter.v1.WorkflowTypeFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowTypeFilter to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowTypeFilter
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartTimeFilter. */
                interface IStartTimeFilter {

                    /** StartTimeFilter earliestTime */
                    earliestTime?: (google.protobuf.ITimestamp|null);

                    /** StartTimeFilter latestTime */
                    latestTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a StartTimeFilter. */
                class StartTimeFilter implements IStartTimeFilter {

                    /**
                     * Constructs a new StartTimeFilter.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.filter.v1.IStartTimeFilter);

                    /** StartTimeFilter earliestTime. */
                    public earliestTime?: (google.protobuf.ITimestamp|null);

                    /** StartTimeFilter latestTime. */
                    public latestTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new StartTimeFilter instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartTimeFilter instance
                     */
                    public static create(properties?: temporal.api.filter.v1.IStartTimeFilter): temporal.api.filter.v1.StartTimeFilter;

                    /**
                     * Encodes the specified StartTimeFilter message. Does not implicitly {@link temporal.api.filter.v1.StartTimeFilter.verify|verify} messages.
                     * @param message StartTimeFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.filter.v1.IStartTimeFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartTimeFilter message, length delimited. Does not implicitly {@link temporal.api.filter.v1.StartTimeFilter.verify|verify} messages.
                     * @param message StartTimeFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.filter.v1.IStartTimeFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartTimeFilter message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartTimeFilter
                     * @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): temporal.api.filter.v1.StartTimeFilter;

                    /**
                     * Decodes a StartTimeFilter message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartTimeFilter
                     * @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)): temporal.api.filter.v1.StartTimeFilter;

                    /**
                     * Creates a StartTimeFilter message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartTimeFilter
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.filter.v1.StartTimeFilter;

                    /**
                     * Creates a plain object from a StartTimeFilter message. Also converts values to other types if specified.
                     * @param message StartTimeFilter
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.filter.v1.StartTimeFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartTimeFilter to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartTimeFilter
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StatusFilter. */
                interface IStatusFilter {

                    /** StatusFilter status */
                    status?: (temporal.api.enums.v1.WorkflowExecutionStatus|null);
                }

                /** Represents a StatusFilter. */
                class StatusFilter implements IStatusFilter {

                    /**
                     * Constructs a new StatusFilter.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.filter.v1.IStatusFilter);

                    /** StatusFilter status. */
                    public status: temporal.api.enums.v1.WorkflowExecutionStatus;

                    /**
                     * Creates a new StatusFilter instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StatusFilter instance
                     */
                    public static create(properties?: temporal.api.filter.v1.IStatusFilter): temporal.api.filter.v1.StatusFilter;

                    /**
                     * Encodes the specified StatusFilter message. Does not implicitly {@link temporal.api.filter.v1.StatusFilter.verify|verify} messages.
                     * @param message StatusFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.filter.v1.IStatusFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StatusFilter message, length delimited. Does not implicitly {@link temporal.api.filter.v1.StatusFilter.verify|verify} messages.
                     * @param message StatusFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.filter.v1.IStatusFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StatusFilter message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StatusFilter
                     * @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): temporal.api.filter.v1.StatusFilter;

                    /**
                     * Decodes a StatusFilter message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StatusFilter
                     * @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)): temporal.api.filter.v1.StatusFilter;

                    /**
                     * Creates a StatusFilter message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StatusFilter
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.filter.v1.StatusFilter;

                    /**
                     * Creates a plain object from a StatusFilter message. Also converts values to other types if specified.
                     * @param message StatusFilter
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.filter.v1.StatusFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StatusFilter to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StatusFilter
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace protocol. */
        namespace protocol {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a Message. */
                interface IMessage {

                    /** An ID for this specific message. */
                    id?: (string|null);

                    /**
                     * Identifies the specific instance of a protocol to which this message
                     * belongs.
                     */
                    protocolInstanceId?: (string|null);

                    /** Message eventId */
                    eventId?: (Long|null);

                    /** Message commandIndex */
                    commandIndex?: (Long|null);

                    /**
                     * The opaque data carried by this message. The protocol type can be
                     * extracted from the package name of the message carried inside the Any.
                     */
                    body?: (google.protobuf.IAny|null);
                }

                /**
                 * (-- api-linter: core::0146::any=disabled
                 * aip.dev/not-precedent: We want runtime extensibility for the body field --)
                 */
                class Message implements IMessage {

                    /**
                     * Constructs a new Message.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.protocol.v1.IMessage);

                    /** An ID for this specific message. */
                    public id: string;

                    /**
                     * Identifies the specific instance of a protocol to which this message
                     * belongs.
                     */
                    public protocolInstanceId: string;

                    /** Message eventId. */
                    public eventId?: (Long|null);

                    /** Message commandIndex. */
                    public commandIndex?: (Long|null);

                    /**
                     * The opaque data carried by this message. The protocol type can be
                     * extracted from the package name of the message carried inside the Any.
                     */
                    public body?: (google.protobuf.IAny|null);

                    /**
                     * The event ID or command ID after which this message can be delivered. The
                     * effects of history up to and including this event ID should be visible to
                     * the code that handles this message. Omit to opt out of sequencing.
                     */
                    public sequencingId?: ("eventId"|"commandIndex");

                    /**
                     * Creates a new Message instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Message instance
                     */
                    public static create(properties?: temporal.api.protocol.v1.IMessage): temporal.api.protocol.v1.Message;

                    /**
                     * Encodes the specified Message message. Does not implicitly {@link temporal.api.protocol.v1.Message.verify|verify} messages.
                     * @param message Message message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.protocol.v1.IMessage, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Message message, length delimited. Does not implicitly {@link temporal.api.protocol.v1.Message.verify|verify} messages.
                     * @param message Message message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.protocol.v1.IMessage, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Message message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Message
                     * @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): temporal.api.protocol.v1.Message;

                    /**
                     * Decodes a Message message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Message
                     * @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)): temporal.api.protocol.v1.Message;

                    /**
                     * Creates a Message message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Message
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.protocol.v1.Message;

                    /**
                     * Creates a plain object from a Message message. Also converts values to other types if specified.
                     * @param message Message
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.protocol.v1.Message, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Message to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Message
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace namespace. */
        namespace namespace {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a NamespaceInfo. */
                interface INamespaceInfo {

                    /** NamespaceInfo name */
                    name?: (string|null);

                    /** NamespaceInfo state */
                    state?: (temporal.api.enums.v1.NamespaceState|null);

                    /** NamespaceInfo description */
                    description?: (string|null);

                    /** NamespaceInfo ownerEmail */
                    ownerEmail?: (string|null);

                    /** A key-value map for any customized purpose. */
                    data?: ({ [k: string]: string }|null);

                    /** NamespaceInfo id */
                    id?: (string|null);

                    /** All capabilities the namespace supports. */
                    capabilities?: (temporal.api.namespace.v1.NamespaceInfo.ICapabilities|null);

                    /** Namespace configured limits */
                    limits?: (temporal.api.namespace.v1.NamespaceInfo.ILimits|null);

                    /**
                     * Whether scheduled workflows are supported on this namespace. This is only needed
                     * temporarily while the feature is experimental, so we can give it a high tag.
                     */
                    supportsSchedules?: (boolean|null);
                }

                /** Represents a NamespaceInfo. */
                class NamespaceInfo implements INamespaceInfo {

                    /**
                     * Constructs a new NamespaceInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.namespace.v1.INamespaceInfo);

                    /** NamespaceInfo name. */
                    public name: string;

                    /** NamespaceInfo state. */
                    public state: temporal.api.enums.v1.NamespaceState;

                    /** NamespaceInfo description. */
                    public description: string;

                    /** NamespaceInfo ownerEmail. */
                    public ownerEmail: string;

                    /** A key-value map for any customized purpose. */
                    public data: { [k: string]: string };

                    /** NamespaceInfo id. */
                    public id: string;

                    /** All capabilities the namespace supports. */
                    public capabilities?: (temporal.api.namespace.v1.NamespaceInfo.ICapabilities|null);

                    /** Namespace configured limits */
                    public limits?: (temporal.api.namespace.v1.NamespaceInfo.ILimits|null);

                    /**
                     * Whether scheduled workflows are supported on this namespace. This is only needed
                     * temporarily while the feature is experimental, so we can give it a high tag.
                     */
                    public supportsSchedules: boolean;

                    /**
                     * Creates a new NamespaceInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NamespaceInfo instance
                     */
                    public static create(properties?: temporal.api.namespace.v1.INamespaceInfo): temporal.api.namespace.v1.NamespaceInfo;

                    /**
                     * Encodes the specified NamespaceInfo message. Does not implicitly {@link temporal.api.namespace.v1.NamespaceInfo.verify|verify} messages.
                     * @param message NamespaceInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.namespace.v1.INamespaceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NamespaceInfo message, length delimited. Does not implicitly {@link temporal.api.namespace.v1.NamespaceInfo.verify|verify} messages.
                     * @param message NamespaceInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.namespace.v1.INamespaceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NamespaceInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NamespaceInfo
                     * @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): temporal.api.namespace.v1.NamespaceInfo;

                    /**
                     * Decodes a NamespaceInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NamespaceInfo
                     * @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)): temporal.api.namespace.v1.NamespaceInfo;

                    /**
                     * Creates a NamespaceInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NamespaceInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.namespace.v1.NamespaceInfo;

                    /**
                     * Creates a plain object from a NamespaceInfo message. Also converts values to other types if specified.
                     * @param message NamespaceInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.namespace.v1.NamespaceInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NamespaceInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NamespaceInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace NamespaceInfo {

                    /** Properties of a Capabilities. */
                    interface ICapabilities {

                        /** True if the namespace supports eager workflow start. */
                        eagerWorkflowStart?: (boolean|null);

                        /** True if the namespace supports sync update */
                        syncUpdate?: (boolean|null);

                        /** True if the namespace supports async update */
                        asyncUpdate?: (boolean|null);

                        /** True if the namespace supports worker heartbeats */
                        workerHeartbeats?: (boolean|null);

                        /** True if the namespace supports reported problems search attribute */
                        reportedProblemsSearchAttribute?: (boolean|null);

                        /** True if the namespace supports pausing workflows */
                        workflowPause?: (boolean|null);

                        /** True if the namespace supports standalone activities */
                        standaloneActivities?: (boolean|null);

                        /**
                         * True if the namespace supports server-side completion of outstanding worker polls on shutdown.
                         * When enabled, the server will complete polls for workers that send WorkerInstanceKey in their
                         * poll requests and call ShutdownWorker with the same WorkerInstanceKey. The poll will return
                         * an empty response. When this flag is true, workers should allow polls to return gracefully
                         * rather than terminating any open polls on shutdown.
                         */
                        workerPollCompleteOnShutdown?: (boolean|null);
                    }

                    /** Namespace capability details. Should contain what features are enabled in a namespace. */
                    class Capabilities implements ICapabilities {

                        /**
                         * Constructs a new Capabilities.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.namespace.v1.NamespaceInfo.ICapabilities);

                        /** True if the namespace supports eager workflow start. */
                        public eagerWorkflowStart: boolean;

                        /** True if the namespace supports sync update */
                        public syncUpdate: boolean;

                        /** True if the namespace supports async update */
                        public asyncUpdate: boolean;

                        /** True if the namespace supports worker heartbeats */
                        public workerHeartbeats: boolean;

                        /** True if the namespace supports reported problems search attribute */
                        public reportedProblemsSearchAttribute: boolean;

                        /** True if the namespace supports pausing workflows */
                        public workflowPause: boolean;

                        /** True if the namespace supports standalone activities */
                        public standaloneActivities: boolean;

                        /**
                         * True if the namespace supports server-side completion of outstanding worker polls on shutdown.
                         * When enabled, the server will complete polls for workers that send WorkerInstanceKey in their
                         * poll requests and call ShutdownWorker with the same WorkerInstanceKey. The poll will return
                         * an empty response. When this flag is true, workers should allow polls to return gracefully
                         * rather than terminating any open polls on shutdown.
                         */
                        public workerPollCompleteOnShutdown: boolean;

                        /**
                         * Creates a new Capabilities instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Capabilities instance
                         */
                        public static create(properties?: temporal.api.namespace.v1.NamespaceInfo.ICapabilities): temporal.api.namespace.v1.NamespaceInfo.Capabilities;

                        /**
                         * Encodes the specified Capabilities message. Does not implicitly {@link temporal.api.namespace.v1.NamespaceInfo.Capabilities.verify|verify} messages.
                         * @param message Capabilities message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.namespace.v1.NamespaceInfo.ICapabilities, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Capabilities message, length delimited. Does not implicitly {@link temporal.api.namespace.v1.NamespaceInfo.Capabilities.verify|verify} messages.
                         * @param message Capabilities message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.namespace.v1.NamespaceInfo.ICapabilities, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Capabilities message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Capabilities
                         * @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): temporal.api.namespace.v1.NamespaceInfo.Capabilities;

                        /**
                         * Decodes a Capabilities message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Capabilities
                         * @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)): temporal.api.namespace.v1.NamespaceInfo.Capabilities;

                        /**
                         * Creates a Capabilities message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Capabilities
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.namespace.v1.NamespaceInfo.Capabilities;

                        /**
                         * Creates a plain object from a Capabilities message. Also converts values to other types if specified.
                         * @param message Capabilities
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.namespace.v1.NamespaceInfo.Capabilities, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Capabilities to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Capabilities
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Limits. */
                    interface ILimits {

                        /**
                         * Maximum size in bytes for payload fields in workflow history events
                         * (e.g., workflow/activity inputs and results, failure details, signal payloads).
                         * When exceeded, the server will reject the operation with an error.
                         */
                        blobSizeLimitError?: (Long|null);

                        /** Maximum total memo size in bytes per workflow execution. */
                        memoSizeLimitError?: (Long|null);
                    }

                    /** Represents a Limits. */
                    class Limits implements ILimits {

                        /**
                         * Constructs a new Limits.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.namespace.v1.NamespaceInfo.ILimits);

                        /**
                         * Maximum size in bytes for payload fields in workflow history events
                         * (e.g., workflow/activity inputs and results, failure details, signal payloads).
                         * When exceeded, the server will reject the operation with an error.
                         */
                        public blobSizeLimitError: Long;

                        /** Maximum total memo size in bytes per workflow execution. */
                        public memoSizeLimitError: Long;

                        /**
                         * Creates a new Limits instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Limits instance
                         */
                        public static create(properties?: temporal.api.namespace.v1.NamespaceInfo.ILimits): temporal.api.namespace.v1.NamespaceInfo.Limits;

                        /**
                         * Encodes the specified Limits message. Does not implicitly {@link temporal.api.namespace.v1.NamespaceInfo.Limits.verify|verify} messages.
                         * @param message Limits message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.namespace.v1.NamespaceInfo.ILimits, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Limits message, length delimited. Does not implicitly {@link temporal.api.namespace.v1.NamespaceInfo.Limits.verify|verify} messages.
                         * @param message Limits message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.namespace.v1.NamespaceInfo.ILimits, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Limits message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Limits
                         * @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): temporal.api.namespace.v1.NamespaceInfo.Limits;

                        /**
                         * Decodes a Limits message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Limits
                         * @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)): temporal.api.namespace.v1.NamespaceInfo.Limits;

                        /**
                         * Creates a Limits message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Limits
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.namespace.v1.NamespaceInfo.Limits;

                        /**
                         * Creates a plain object from a Limits message. Also converts values to other types if specified.
                         * @param message Limits
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.namespace.v1.NamespaceInfo.Limits, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Limits to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Limits
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a NamespaceConfig. */
                interface INamespaceConfig {

                    /** NamespaceConfig workflowExecutionRetentionTtl */
                    workflowExecutionRetentionTtl?: (google.protobuf.IDuration|null);

                    /** NamespaceConfig badBinaries */
                    badBinaries?: (temporal.api.namespace.v1.IBadBinaries|null);

                    /** If unspecified (ARCHIVAL_STATE_UNSPECIFIED) then default server configuration is used. */
                    historyArchivalState?: (temporal.api.enums.v1.ArchivalState|null);

                    /** NamespaceConfig historyArchivalUri */
                    historyArchivalUri?: (string|null);

                    /** If unspecified (ARCHIVAL_STATE_UNSPECIFIED) then default server configuration is used. */
                    visibilityArchivalState?: (temporal.api.enums.v1.ArchivalState|null);

                    /** NamespaceConfig visibilityArchivalUri */
                    visibilityArchivalUri?: (string|null);

                    /** Map from field name to alias. */
                    customSearchAttributeAliases?: ({ [k: string]: string }|null);
                }

                /** Represents a NamespaceConfig. */
                class NamespaceConfig implements INamespaceConfig {

                    /**
                     * Constructs a new NamespaceConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.namespace.v1.INamespaceConfig);

                    /** NamespaceConfig workflowExecutionRetentionTtl. */
                    public workflowExecutionRetentionTtl?: (google.protobuf.IDuration|null);

                    /** NamespaceConfig badBinaries. */
                    public badBinaries?: (temporal.api.namespace.v1.IBadBinaries|null);

                    /** If unspecified (ARCHIVAL_STATE_UNSPECIFIED) then default server configuration is used. */
                    public historyArchivalState: temporal.api.enums.v1.ArchivalState;

                    /** NamespaceConfig historyArchivalUri. */
                    public historyArchivalUri: string;

                    /** If unspecified (ARCHIVAL_STATE_UNSPECIFIED) then default server configuration is used. */
                    public visibilityArchivalState: temporal.api.enums.v1.ArchivalState;

                    /** NamespaceConfig visibilityArchivalUri. */
                    public visibilityArchivalUri: string;

                    /** Map from field name to alias. */
                    public customSearchAttributeAliases: { [k: string]: string };

                    /**
                     * Creates a new NamespaceConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NamespaceConfig instance
                     */
                    public static create(properties?: temporal.api.namespace.v1.INamespaceConfig): temporal.api.namespace.v1.NamespaceConfig;

                    /**
                     * Encodes the specified NamespaceConfig message. Does not implicitly {@link temporal.api.namespace.v1.NamespaceConfig.verify|verify} messages.
                     * @param message NamespaceConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.namespace.v1.INamespaceConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NamespaceConfig message, length delimited. Does not implicitly {@link temporal.api.namespace.v1.NamespaceConfig.verify|verify} messages.
                     * @param message NamespaceConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.namespace.v1.INamespaceConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NamespaceConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NamespaceConfig
                     * @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): temporal.api.namespace.v1.NamespaceConfig;

                    /**
                     * Decodes a NamespaceConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NamespaceConfig
                     * @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)): temporal.api.namespace.v1.NamespaceConfig;

                    /**
                     * Creates a NamespaceConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NamespaceConfig
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.namespace.v1.NamespaceConfig;

                    /**
                     * Creates a plain object from a NamespaceConfig message. Also converts values to other types if specified.
                     * @param message NamespaceConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.namespace.v1.NamespaceConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NamespaceConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NamespaceConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BadBinaries. */
                interface IBadBinaries {

                    /** BadBinaries binaries */
                    binaries?: ({ [k: string]: temporal.api.namespace.v1.IBadBinaryInfo }|null);
                }

                /** Represents a BadBinaries. */
                class BadBinaries implements IBadBinaries {

                    /**
                     * Constructs a new BadBinaries.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.namespace.v1.IBadBinaries);

                    /** BadBinaries binaries. */
                    public binaries: { [k: string]: temporal.api.namespace.v1.IBadBinaryInfo };

                    /**
                     * Creates a new BadBinaries instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BadBinaries instance
                     */
                    public static create(properties?: temporal.api.namespace.v1.IBadBinaries): temporal.api.namespace.v1.BadBinaries;

                    /**
                     * Encodes the specified BadBinaries message. Does not implicitly {@link temporal.api.namespace.v1.BadBinaries.verify|verify} messages.
                     * @param message BadBinaries message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.namespace.v1.IBadBinaries, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BadBinaries message, length delimited. Does not implicitly {@link temporal.api.namespace.v1.BadBinaries.verify|verify} messages.
                     * @param message BadBinaries message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.namespace.v1.IBadBinaries, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BadBinaries message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BadBinaries
                     * @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): temporal.api.namespace.v1.BadBinaries;

                    /**
                     * Decodes a BadBinaries message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BadBinaries
                     * @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)): temporal.api.namespace.v1.BadBinaries;

                    /**
                     * Creates a BadBinaries message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BadBinaries
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.namespace.v1.BadBinaries;

                    /**
                     * Creates a plain object from a BadBinaries message. Also converts values to other types if specified.
                     * @param message BadBinaries
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.namespace.v1.BadBinaries, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BadBinaries to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BadBinaries
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BadBinaryInfo. */
                interface IBadBinaryInfo {

                    /** BadBinaryInfo reason */
                    reason?: (string|null);

                    /** BadBinaryInfo operator */
                    operator?: (string|null);

                    /** BadBinaryInfo createTime */
                    createTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a BadBinaryInfo. */
                class BadBinaryInfo implements IBadBinaryInfo {

                    /**
                     * Constructs a new BadBinaryInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.namespace.v1.IBadBinaryInfo);

                    /** BadBinaryInfo reason. */
                    public reason: string;

                    /** BadBinaryInfo operator. */
                    public operator: string;

                    /** BadBinaryInfo createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new BadBinaryInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BadBinaryInfo instance
                     */
                    public static create(properties?: temporal.api.namespace.v1.IBadBinaryInfo): temporal.api.namespace.v1.BadBinaryInfo;

                    /**
                     * Encodes the specified BadBinaryInfo message. Does not implicitly {@link temporal.api.namespace.v1.BadBinaryInfo.verify|verify} messages.
                     * @param message BadBinaryInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.namespace.v1.IBadBinaryInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BadBinaryInfo message, length delimited. Does not implicitly {@link temporal.api.namespace.v1.BadBinaryInfo.verify|verify} messages.
                     * @param message BadBinaryInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.namespace.v1.IBadBinaryInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BadBinaryInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BadBinaryInfo
                     * @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): temporal.api.namespace.v1.BadBinaryInfo;

                    /**
                     * Decodes a BadBinaryInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BadBinaryInfo
                     * @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)): temporal.api.namespace.v1.BadBinaryInfo;

                    /**
                     * Creates a BadBinaryInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BadBinaryInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.namespace.v1.BadBinaryInfo;

                    /**
                     * Creates a plain object from a BadBinaryInfo message. Also converts values to other types if specified.
                     * @param message BadBinaryInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.namespace.v1.BadBinaryInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BadBinaryInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BadBinaryInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateNamespaceInfo. */
                interface IUpdateNamespaceInfo {

                    /** UpdateNamespaceInfo description */
                    description?: (string|null);

                    /** UpdateNamespaceInfo ownerEmail */
                    ownerEmail?: (string|null);

                    /**
                     * A key-value map for any customized purpose.
                     * If data already exists on the namespace,
                     * this will merge with the existing key values.
                     */
                    data?: ({ [k: string]: string }|null);

                    /**
                     * New namespace state, server will reject if transition is not allowed.
                     * Allowed transitions are:
                     * Registered -> [ Deleted | Deprecated | Handover ]
                     * Handover -> [ Registered ]
                     * Default is NAMESPACE_STATE_UNSPECIFIED which is do not change state.
                     */
                    state?: (temporal.api.enums.v1.NamespaceState|null);
                }

                /** Represents an UpdateNamespaceInfo. */
                class UpdateNamespaceInfo implements IUpdateNamespaceInfo {

                    /**
                     * Constructs a new UpdateNamespaceInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.namespace.v1.IUpdateNamespaceInfo);

                    /** UpdateNamespaceInfo description. */
                    public description: string;

                    /** UpdateNamespaceInfo ownerEmail. */
                    public ownerEmail: string;

                    /**
                     * A key-value map for any customized purpose.
                     * If data already exists on the namespace,
                     * this will merge with the existing key values.
                     */
                    public data: { [k: string]: string };

                    /**
                     * New namespace state, server will reject if transition is not allowed.
                     * Allowed transitions are:
                     * Registered -> [ Deleted | Deprecated | Handover ]
                     * Handover -> [ Registered ]
                     * Default is NAMESPACE_STATE_UNSPECIFIED which is do not change state.
                     */
                    public state: temporal.api.enums.v1.NamespaceState;

                    /**
                     * Creates a new UpdateNamespaceInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateNamespaceInfo instance
                     */
                    public static create(properties?: temporal.api.namespace.v1.IUpdateNamespaceInfo): temporal.api.namespace.v1.UpdateNamespaceInfo;

                    /**
                     * Encodes the specified UpdateNamespaceInfo message. Does not implicitly {@link temporal.api.namespace.v1.UpdateNamespaceInfo.verify|verify} messages.
                     * @param message UpdateNamespaceInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.namespace.v1.IUpdateNamespaceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateNamespaceInfo message, length delimited. Does not implicitly {@link temporal.api.namespace.v1.UpdateNamespaceInfo.verify|verify} messages.
                     * @param message UpdateNamespaceInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.namespace.v1.IUpdateNamespaceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateNamespaceInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateNamespaceInfo
                     * @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): temporal.api.namespace.v1.UpdateNamespaceInfo;

                    /**
                     * Decodes an UpdateNamespaceInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateNamespaceInfo
                     * @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)): temporal.api.namespace.v1.UpdateNamespaceInfo;

                    /**
                     * Creates an UpdateNamespaceInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateNamespaceInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.namespace.v1.UpdateNamespaceInfo;

                    /**
                     * Creates a plain object from an UpdateNamespaceInfo message. Also converts values to other types if specified.
                     * @param message UpdateNamespaceInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.namespace.v1.UpdateNamespaceInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateNamespaceInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateNamespaceInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NamespaceFilter. */
                interface INamespaceFilter {

                    /**
                     * By default namespaces in NAMESPACE_STATE_DELETED state are not included.
                     * Setting include_deleted to true will include deleted namespaces.
                     * Note: Namespace is in NAMESPACE_STATE_DELETED state when it was deleted from the system but associated data is not deleted yet.
                     */
                    includeDeleted?: (boolean|null);
                }

                /** Represents a NamespaceFilter. */
                class NamespaceFilter implements INamespaceFilter {

                    /**
                     * Constructs a new NamespaceFilter.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.namespace.v1.INamespaceFilter);

                    /**
                     * By default namespaces in NAMESPACE_STATE_DELETED state are not included.
                     * Setting include_deleted to true will include deleted namespaces.
                     * Note: Namespace is in NAMESPACE_STATE_DELETED state when it was deleted from the system but associated data is not deleted yet.
                     */
                    public includeDeleted: boolean;

                    /**
                     * Creates a new NamespaceFilter instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NamespaceFilter instance
                     */
                    public static create(properties?: temporal.api.namespace.v1.INamespaceFilter): temporal.api.namespace.v1.NamespaceFilter;

                    /**
                     * Encodes the specified NamespaceFilter message. Does not implicitly {@link temporal.api.namespace.v1.NamespaceFilter.verify|verify} messages.
                     * @param message NamespaceFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.namespace.v1.INamespaceFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NamespaceFilter message, length delimited. Does not implicitly {@link temporal.api.namespace.v1.NamespaceFilter.verify|verify} messages.
                     * @param message NamespaceFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.namespace.v1.INamespaceFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NamespaceFilter message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NamespaceFilter
                     * @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): temporal.api.namespace.v1.NamespaceFilter;

                    /**
                     * Decodes a NamespaceFilter message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NamespaceFilter
                     * @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)): temporal.api.namespace.v1.NamespaceFilter;

                    /**
                     * Creates a NamespaceFilter message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NamespaceFilter
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.namespace.v1.NamespaceFilter;

                    /**
                     * Creates a plain object from a NamespaceFilter message. Also converts values to other types if specified.
                     * @param message NamespaceFilter
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.namespace.v1.NamespaceFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NamespaceFilter to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NamespaceFilter
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace query. */
        namespace query {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a WorkflowQuery. */
                interface IWorkflowQuery {

                    /** The workflow-author-defined identifier of the query. Typically a function name. */
                    queryType?: (string|null);

                    /** Serialized arguments that will be provided to the query handler. */
                    queryArgs?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Headers that were passed by the caller of the query and copied by temporal
                     * server into the workflow task.
                     */
                    header?: (temporal.api.common.v1.IHeader|null);
                }

                /** See https://docs.temporal.io/docs/concepts/queries/ */
                class WorkflowQuery implements IWorkflowQuery {

                    /**
                     * Constructs a new WorkflowQuery.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.query.v1.IWorkflowQuery);

                    /** The workflow-author-defined identifier of the query. Typically a function name. */
                    public queryType: string;

                    /** Serialized arguments that will be provided to the query handler. */
                    public queryArgs?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Headers that were passed by the caller of the query and copied by temporal
                     * server into the workflow task.
                     */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /**
                     * Creates a new WorkflowQuery instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowQuery instance
                     */
                    public static create(properties?: temporal.api.query.v1.IWorkflowQuery): temporal.api.query.v1.WorkflowQuery;

                    /**
                     * Encodes the specified WorkflowQuery message. Does not implicitly {@link temporal.api.query.v1.WorkflowQuery.verify|verify} messages.
                     * @param message WorkflowQuery message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.query.v1.IWorkflowQuery, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowQuery message, length delimited. Does not implicitly {@link temporal.api.query.v1.WorkflowQuery.verify|verify} messages.
                     * @param message WorkflowQuery message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.query.v1.IWorkflowQuery, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowQuery message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowQuery
                     * @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): temporal.api.query.v1.WorkflowQuery;

                    /**
                     * Decodes a WorkflowQuery message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowQuery
                     * @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)): temporal.api.query.v1.WorkflowQuery;

                    /**
                     * Creates a WorkflowQuery message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowQuery
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.query.v1.WorkflowQuery;

                    /**
                     * Creates a plain object from a WorkflowQuery message. Also converts values to other types if specified.
                     * @param message WorkflowQuery
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.query.v1.WorkflowQuery, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowQuery to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowQuery
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowQueryResult. */
                interface IWorkflowQueryResult {

                    /** Did the query succeed or fail? */
                    resultType?: (temporal.api.enums.v1.QueryResultType|null);

                    /**
                     * Set when the query succeeds with the results.
                     * Mutually exclusive with `error_message` and `failure`.
                     */
                    answer?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Mutually exclusive with `answer`. Set when the query fails.
                     * See also the newer `failure` field.
                     */
                    errorMessage?: (string|null);

                    /**
                     * The full reason for this query failure. This field is newer than `error_message` and can be encoded by the SDK's
                     * failure converter to support E2E encryption of messages and stack traces.
                     * Mutually exclusive with `answer`. Set when the query fails.
                     */
                    failure?: (temporal.api.failure.v1.IFailure|null);
                }

                /** Answer to a `WorkflowQuery` */
                class WorkflowQueryResult implements IWorkflowQueryResult {

                    /**
                     * Constructs a new WorkflowQueryResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.query.v1.IWorkflowQueryResult);

                    /** Did the query succeed or fail? */
                    public resultType: temporal.api.enums.v1.QueryResultType;

                    /**
                     * Set when the query succeeds with the results.
                     * Mutually exclusive with `error_message` and `failure`.
                     */
                    public answer?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Mutually exclusive with `answer`. Set when the query fails.
                     * See also the newer `failure` field.
                     */
                    public errorMessage: string;

                    /**
                     * The full reason for this query failure. This field is newer than `error_message` and can be encoded by the SDK's
                     * failure converter to support E2E encryption of messages and stack traces.
                     * Mutually exclusive with `answer`. Set when the query fails.
                     */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Creates a new WorkflowQueryResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowQueryResult instance
                     */
                    public static create(properties?: temporal.api.query.v1.IWorkflowQueryResult): temporal.api.query.v1.WorkflowQueryResult;

                    /**
                     * Encodes the specified WorkflowQueryResult message. Does not implicitly {@link temporal.api.query.v1.WorkflowQueryResult.verify|verify} messages.
                     * @param message WorkflowQueryResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.query.v1.IWorkflowQueryResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowQueryResult message, length delimited. Does not implicitly {@link temporal.api.query.v1.WorkflowQueryResult.verify|verify} messages.
                     * @param message WorkflowQueryResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.query.v1.IWorkflowQueryResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowQueryResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowQueryResult
                     * @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): temporal.api.query.v1.WorkflowQueryResult;

                    /**
                     * Decodes a WorkflowQueryResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowQueryResult
                     * @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)): temporal.api.query.v1.WorkflowQueryResult;

                    /**
                     * Creates a WorkflowQueryResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowQueryResult
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.query.v1.WorkflowQueryResult;

                    /**
                     * Creates a plain object from a WorkflowQueryResult message. Also converts values to other types if specified.
                     * @param message WorkflowQueryResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.query.v1.WorkflowQueryResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowQueryResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowQueryResult
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a QueryRejected. */
                interface IQueryRejected {

                    /** QueryRejected status */
                    status?: (temporal.api.enums.v1.WorkflowExecutionStatus|null);
                }

                /** Represents a QueryRejected. */
                class QueryRejected implements IQueryRejected {

                    /**
                     * Constructs a new QueryRejected.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.query.v1.IQueryRejected);

                    /** QueryRejected status. */
                    public status: temporal.api.enums.v1.WorkflowExecutionStatus;

                    /**
                     * Creates a new QueryRejected instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns QueryRejected instance
                     */
                    public static create(properties?: temporal.api.query.v1.IQueryRejected): temporal.api.query.v1.QueryRejected;

                    /**
                     * Encodes the specified QueryRejected message. Does not implicitly {@link temporal.api.query.v1.QueryRejected.verify|verify} messages.
                     * @param message QueryRejected message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.query.v1.IQueryRejected, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified QueryRejected message, length delimited. Does not implicitly {@link temporal.api.query.v1.QueryRejected.verify|verify} messages.
                     * @param message QueryRejected message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.query.v1.IQueryRejected, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a QueryRejected message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns QueryRejected
                     * @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): temporal.api.query.v1.QueryRejected;

                    /**
                     * Decodes a QueryRejected message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns QueryRejected
                     * @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)): temporal.api.query.v1.QueryRejected;

                    /**
                     * Creates a QueryRejected message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns QueryRejected
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.query.v1.QueryRejected;

                    /**
                     * Creates a plain object from a QueryRejected message. Also converts values to other types if specified.
                     * @param message QueryRejected
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.query.v1.QueryRejected, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this QueryRejected to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for QueryRejected
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace replication. */
        namespace replication {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a ClusterReplicationConfig. */
                interface IClusterReplicationConfig {

                    /** ClusterReplicationConfig clusterName */
                    clusterName?: (string|null);
                }

                /** Represents a ClusterReplicationConfig. */
                class ClusterReplicationConfig implements IClusterReplicationConfig {

                    /**
                     * Constructs a new ClusterReplicationConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.replication.v1.IClusterReplicationConfig);

                    /** ClusterReplicationConfig clusterName. */
                    public clusterName: string;

                    /**
                     * Creates a new ClusterReplicationConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ClusterReplicationConfig instance
                     */
                    public static create(properties?: temporal.api.replication.v1.IClusterReplicationConfig): temporal.api.replication.v1.ClusterReplicationConfig;

                    /**
                     * Encodes the specified ClusterReplicationConfig message. Does not implicitly {@link temporal.api.replication.v1.ClusterReplicationConfig.verify|verify} messages.
                     * @param message ClusterReplicationConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.replication.v1.IClusterReplicationConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ClusterReplicationConfig message, length delimited. Does not implicitly {@link temporal.api.replication.v1.ClusterReplicationConfig.verify|verify} messages.
                     * @param message ClusterReplicationConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.replication.v1.IClusterReplicationConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ClusterReplicationConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ClusterReplicationConfig
                     * @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): temporal.api.replication.v1.ClusterReplicationConfig;

                    /**
                     * Decodes a ClusterReplicationConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ClusterReplicationConfig
                     * @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)): temporal.api.replication.v1.ClusterReplicationConfig;

                    /**
                     * Creates a ClusterReplicationConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ClusterReplicationConfig
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.replication.v1.ClusterReplicationConfig;

                    /**
                     * Creates a plain object from a ClusterReplicationConfig message. Also converts values to other types if specified.
                     * @param message ClusterReplicationConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.replication.v1.ClusterReplicationConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ClusterReplicationConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ClusterReplicationConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NamespaceReplicationConfig. */
                interface INamespaceReplicationConfig {

                    /** NamespaceReplicationConfig activeClusterName */
                    activeClusterName?: (string|null);

                    /** NamespaceReplicationConfig clusters */
                    clusters?: (temporal.api.replication.v1.IClusterReplicationConfig[]|null);

                    /** NamespaceReplicationConfig state */
                    state?: (temporal.api.enums.v1.ReplicationState|null);
                }

                /** Represents a NamespaceReplicationConfig. */
                class NamespaceReplicationConfig implements INamespaceReplicationConfig {

                    /**
                     * Constructs a new NamespaceReplicationConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.replication.v1.INamespaceReplicationConfig);

                    /** NamespaceReplicationConfig activeClusterName. */
                    public activeClusterName: string;

                    /** NamespaceReplicationConfig clusters. */
                    public clusters: temporal.api.replication.v1.IClusterReplicationConfig[];

                    /** NamespaceReplicationConfig state. */
                    public state: temporal.api.enums.v1.ReplicationState;

                    /**
                     * Creates a new NamespaceReplicationConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NamespaceReplicationConfig instance
                     */
                    public static create(properties?: temporal.api.replication.v1.INamespaceReplicationConfig): temporal.api.replication.v1.NamespaceReplicationConfig;

                    /**
                     * Encodes the specified NamespaceReplicationConfig message. Does not implicitly {@link temporal.api.replication.v1.NamespaceReplicationConfig.verify|verify} messages.
                     * @param message NamespaceReplicationConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.replication.v1.INamespaceReplicationConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NamespaceReplicationConfig message, length delimited. Does not implicitly {@link temporal.api.replication.v1.NamespaceReplicationConfig.verify|verify} messages.
                     * @param message NamespaceReplicationConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.replication.v1.INamespaceReplicationConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NamespaceReplicationConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NamespaceReplicationConfig
                     * @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): temporal.api.replication.v1.NamespaceReplicationConfig;

                    /**
                     * Decodes a NamespaceReplicationConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NamespaceReplicationConfig
                     * @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)): temporal.api.replication.v1.NamespaceReplicationConfig;

                    /**
                     * Creates a NamespaceReplicationConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NamespaceReplicationConfig
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.replication.v1.NamespaceReplicationConfig;

                    /**
                     * Creates a plain object from a NamespaceReplicationConfig message. Also converts values to other types if specified.
                     * @param message NamespaceReplicationConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.replication.v1.NamespaceReplicationConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NamespaceReplicationConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NamespaceReplicationConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a FailoverStatus. */
                interface IFailoverStatus {

                    /** Timestamp when the Cluster switched to the following failover_version */
                    failoverTime?: (google.protobuf.ITimestamp|null);

                    /** FailoverStatus failoverVersion */
                    failoverVersion?: (Long|null);
                }

                /** Represents a historical replication status of a Namespace */
                class FailoverStatus implements IFailoverStatus {

                    /**
                     * Constructs a new FailoverStatus.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.replication.v1.IFailoverStatus);

                    /** Timestamp when the Cluster switched to the following failover_version */
                    public failoverTime?: (google.protobuf.ITimestamp|null);

                    /** FailoverStatus failoverVersion. */
                    public failoverVersion: Long;

                    /**
                     * Creates a new FailoverStatus instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FailoverStatus instance
                     */
                    public static create(properties?: temporal.api.replication.v1.IFailoverStatus): temporal.api.replication.v1.FailoverStatus;

                    /**
                     * Encodes the specified FailoverStatus message. Does not implicitly {@link temporal.api.replication.v1.FailoverStatus.verify|verify} messages.
                     * @param message FailoverStatus message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.replication.v1.IFailoverStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FailoverStatus message, length delimited. Does not implicitly {@link temporal.api.replication.v1.FailoverStatus.verify|verify} messages.
                     * @param message FailoverStatus message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.replication.v1.IFailoverStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FailoverStatus message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FailoverStatus
                     * @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): temporal.api.replication.v1.FailoverStatus;

                    /**
                     * Decodes a FailoverStatus message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FailoverStatus
                     * @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)): temporal.api.replication.v1.FailoverStatus;

                    /**
                     * Creates a FailoverStatus message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FailoverStatus
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.replication.v1.FailoverStatus;

                    /**
                     * Creates a plain object from a FailoverStatus message. Also converts values to other types if specified.
                     * @param message FailoverStatus
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.replication.v1.FailoverStatus, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FailoverStatus to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FailoverStatus
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace rules. */
        namespace rules {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a WorkflowRuleAction. */
                interface IWorkflowRuleAction {

                    /** WorkflowRuleAction activityPause */
                    activityPause?: (temporal.api.rules.v1.WorkflowRuleAction.IActionActivityPause|null);
                }

                /** Represents a WorkflowRuleAction. */
                class WorkflowRuleAction implements IWorkflowRuleAction {

                    /**
                     * Constructs a new WorkflowRuleAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.rules.v1.IWorkflowRuleAction);

                    /** WorkflowRuleAction activityPause. */
                    public activityPause?: (temporal.api.rules.v1.WorkflowRuleAction.IActionActivityPause|null);

                    /** Supported actions. */
                    public variant?: "activityPause";

                    /**
                     * Creates a new WorkflowRuleAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowRuleAction instance
                     */
                    public static create(properties?: temporal.api.rules.v1.IWorkflowRuleAction): temporal.api.rules.v1.WorkflowRuleAction;

                    /**
                     * Encodes the specified WorkflowRuleAction message. Does not implicitly {@link temporal.api.rules.v1.WorkflowRuleAction.verify|verify} messages.
                     * @param message WorkflowRuleAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.rules.v1.IWorkflowRuleAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowRuleAction message, length delimited. Does not implicitly {@link temporal.api.rules.v1.WorkflowRuleAction.verify|verify} messages.
                     * @param message WorkflowRuleAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.rules.v1.IWorkflowRuleAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowRuleAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowRuleAction
                     * @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): temporal.api.rules.v1.WorkflowRuleAction;

                    /**
                     * Decodes a WorkflowRuleAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowRuleAction
                     * @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)): temporal.api.rules.v1.WorkflowRuleAction;

                    /**
                     * Creates a WorkflowRuleAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowRuleAction
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.rules.v1.WorkflowRuleAction;

                    /**
                     * Creates a plain object from a WorkflowRuleAction message. Also converts values to other types if specified.
                     * @param message WorkflowRuleAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.rules.v1.WorkflowRuleAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowRuleAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowRuleAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace WorkflowRuleAction {

                    /** Properties of an ActionActivityPause. */
                    interface IActionActivityPause {
                    }

                    /** Represents an ActionActivityPause. */
                    class ActionActivityPause implements IActionActivityPause {

                        /**
                         * Constructs a new ActionActivityPause.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.rules.v1.WorkflowRuleAction.IActionActivityPause);

                        /**
                         * Creates a new ActionActivityPause instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ActionActivityPause instance
                         */
                        public static create(properties?: temporal.api.rules.v1.WorkflowRuleAction.IActionActivityPause): temporal.api.rules.v1.WorkflowRuleAction.ActionActivityPause;

                        /**
                         * Encodes the specified ActionActivityPause message. Does not implicitly {@link temporal.api.rules.v1.WorkflowRuleAction.ActionActivityPause.verify|verify} messages.
                         * @param message ActionActivityPause message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.rules.v1.WorkflowRuleAction.IActionActivityPause, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ActionActivityPause message, length delimited. Does not implicitly {@link temporal.api.rules.v1.WorkflowRuleAction.ActionActivityPause.verify|verify} messages.
                         * @param message ActionActivityPause message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.rules.v1.WorkflowRuleAction.IActionActivityPause, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ActionActivityPause message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ActionActivityPause
                         * @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): temporal.api.rules.v1.WorkflowRuleAction.ActionActivityPause;

                        /**
                         * Decodes an ActionActivityPause message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ActionActivityPause
                         * @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)): temporal.api.rules.v1.WorkflowRuleAction.ActionActivityPause;

                        /**
                         * Creates an ActionActivityPause message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ActionActivityPause
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.rules.v1.WorkflowRuleAction.ActionActivityPause;

                        /**
                         * Creates a plain object from an ActionActivityPause message. Also converts values to other types if specified.
                         * @param message ActionActivityPause
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.rules.v1.WorkflowRuleAction.ActionActivityPause, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ActionActivityPause to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ActionActivityPause
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a WorkflowRuleSpec. */
                interface IWorkflowRuleSpec {

                    /**
                     * The id of the new workflow rule. Must be unique within the namespace.
                     * Can be set by the user, and can have business meaning.
                     */
                    id?: (string|null);

                    /** WorkflowRuleSpec activityStart */
                    activityStart?: (temporal.api.rules.v1.WorkflowRuleSpec.IActivityStartingTrigger|null);

                    /**
                     * Restricted Visibility query.
                     * This query is used to filter workflows in this namespace to which this rule should apply.
                     * It is applied to any running workflow each time a triggering event occurs, before the trigger predicate is evaluated.
                     * The following workflow attributes are supported:
                     * - WorkflowType
                     * - WorkflowId
                     * - StartTime
                     * - ExecutionStatus
                     */
                    visibilityQuery?: (string|null);

                    /** WorkflowRuleAction to be taken when the rule is triggered and predicate is matched. */
                    actions?: (temporal.api.rules.v1.IWorkflowRuleAction[]|null);

                    /**
                     * Expiration time of the rule. After this time, the rule will be deleted.
                     * Can be empty if the rule should never expire.
                     */
                    expirationTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a WorkflowRuleSpec. */
                class WorkflowRuleSpec implements IWorkflowRuleSpec {

                    /**
                     * Constructs a new WorkflowRuleSpec.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.rules.v1.IWorkflowRuleSpec);

                    /**
                     * The id of the new workflow rule. Must be unique within the namespace.
                     * Can be set by the user, and can have business meaning.
                     */
                    public id: string;

                    /** WorkflowRuleSpec activityStart. */
                    public activityStart?: (temporal.api.rules.v1.WorkflowRuleSpec.IActivityStartingTrigger|null);

                    /**
                     * Restricted Visibility query.
                     * This query is used to filter workflows in this namespace to which this rule should apply.
                     * It is applied to any running workflow each time a triggering event occurs, before the trigger predicate is evaluated.
                     * The following workflow attributes are supported:
                     * - WorkflowType
                     * - WorkflowId
                     * - StartTime
                     * - ExecutionStatus
                     */
                    public visibilityQuery: string;

                    /** WorkflowRuleAction to be taken when the rule is triggered and predicate is matched. */
                    public actions: temporal.api.rules.v1.IWorkflowRuleAction[];

                    /**
                     * Expiration time of the rule. After this time, the rule will be deleted.
                     * Can be empty if the rule should never expire.
                     */
                    public expirationTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Specifies how the rule should be triggered and evaluated.
                     * Currently, only "activity start" type is supported.
                     */
                    public trigger?: "activityStart";

                    /**
                     * Creates a new WorkflowRuleSpec instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowRuleSpec instance
                     */
                    public static create(properties?: temporal.api.rules.v1.IWorkflowRuleSpec): temporal.api.rules.v1.WorkflowRuleSpec;

                    /**
                     * Encodes the specified WorkflowRuleSpec message. Does not implicitly {@link temporal.api.rules.v1.WorkflowRuleSpec.verify|verify} messages.
                     * @param message WorkflowRuleSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.rules.v1.IWorkflowRuleSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowRuleSpec message, length delimited. Does not implicitly {@link temporal.api.rules.v1.WorkflowRuleSpec.verify|verify} messages.
                     * @param message WorkflowRuleSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.rules.v1.IWorkflowRuleSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowRuleSpec message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowRuleSpec
                     * @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): temporal.api.rules.v1.WorkflowRuleSpec;

                    /**
                     * Decodes a WorkflowRuleSpec message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowRuleSpec
                     * @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)): temporal.api.rules.v1.WorkflowRuleSpec;

                    /**
                     * Creates a WorkflowRuleSpec message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowRuleSpec
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.rules.v1.WorkflowRuleSpec;

                    /**
                     * Creates a plain object from a WorkflowRuleSpec message. Also converts values to other types if specified.
                     * @param message WorkflowRuleSpec
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.rules.v1.WorkflowRuleSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowRuleSpec to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowRuleSpec
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace WorkflowRuleSpec {

                    /** Properties of an ActivityStartingTrigger. */
                    interface IActivityStartingTrigger {

                        /**
                         * Activity predicate is a SQL-like string filter parameter.
                         * It is used to match against workflow data.
                         * The following activity attributes are supported as part of the predicate:
                         * - ActivityType: An Activity Type is the mapping of a name to an Activity Definition..
                         * - ActivityId: The ID of the activity.
                         * - ActivityAttempt: The number attempts of the activity.
                         * - BackoffInterval: The current amount of time between scheduled attempts of the activity.
                         * - ActivityStatus: The status of the activity. Can be one of "Scheduled", "Started", "Paused".
                         * - TaskQueue: The name of the task queue the workflow specified that the activity should run on.
                         * Activity predicate support the following operators:
                         * =, !=, >, >=, <, <=
                         * AND, OR, ()
                         * BETWEEN ... AND
                         * STARTS_WITH
                         */
                        predicate?: (string|null);
                    }

                    /** Activity trigger will be triggered when an activity is about to start. */
                    class ActivityStartingTrigger implements IActivityStartingTrigger {

                        /**
                         * Constructs a new ActivityStartingTrigger.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.rules.v1.WorkflowRuleSpec.IActivityStartingTrigger);

                        /**
                         * Activity predicate is a SQL-like string filter parameter.
                         * It is used to match against workflow data.
                         * The following activity attributes are supported as part of the predicate:
                         * - ActivityType: An Activity Type is the mapping of a name to an Activity Definition..
                         * - ActivityId: The ID of the activity.
                         * - ActivityAttempt: The number attempts of the activity.
                         * - BackoffInterval: The current amount of time between scheduled attempts of the activity.
                         * - ActivityStatus: The status of the activity. Can be one of "Scheduled", "Started", "Paused".
                         * - TaskQueue: The name of the task queue the workflow specified that the activity should run on.
                         * Activity predicate support the following operators:
                         * * =, !=, >, >=, <, <=
                         * * AND, OR, ()
                         * * BETWEEN ... AND
                         * STARTS_WITH
                         */
                        public predicate: string;

                        /**
                         * Creates a new ActivityStartingTrigger instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ActivityStartingTrigger instance
                         */
                        public static create(properties?: temporal.api.rules.v1.WorkflowRuleSpec.IActivityStartingTrigger): temporal.api.rules.v1.WorkflowRuleSpec.ActivityStartingTrigger;

                        /**
                         * Encodes the specified ActivityStartingTrigger message. Does not implicitly {@link temporal.api.rules.v1.WorkflowRuleSpec.ActivityStartingTrigger.verify|verify} messages.
                         * @param message ActivityStartingTrigger message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.rules.v1.WorkflowRuleSpec.IActivityStartingTrigger, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ActivityStartingTrigger message, length delimited. Does not implicitly {@link temporal.api.rules.v1.WorkflowRuleSpec.ActivityStartingTrigger.verify|verify} messages.
                         * @param message ActivityStartingTrigger message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.rules.v1.WorkflowRuleSpec.IActivityStartingTrigger, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ActivityStartingTrigger message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ActivityStartingTrigger
                         * @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): temporal.api.rules.v1.WorkflowRuleSpec.ActivityStartingTrigger;

                        /**
                         * Decodes an ActivityStartingTrigger message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ActivityStartingTrigger
                         * @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)): temporal.api.rules.v1.WorkflowRuleSpec.ActivityStartingTrigger;

                        /**
                         * Creates an ActivityStartingTrigger message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ActivityStartingTrigger
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.rules.v1.WorkflowRuleSpec.ActivityStartingTrigger;

                        /**
                         * Creates a plain object from an ActivityStartingTrigger message. Also converts values to other types if specified.
                         * @param message ActivityStartingTrigger
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.rules.v1.WorkflowRuleSpec.ActivityStartingTrigger, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ActivityStartingTrigger to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ActivityStartingTrigger
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a WorkflowRule. */
                interface IWorkflowRule {

                    /** Rule creation time. */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** Rule specification */
                    spec?: (temporal.api.rules.v1.IWorkflowRuleSpec|null);

                    /**
                     * Identity of the actor that created the rule
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: It is better reflect the intent this way, we will also have updated_by. --)
                     * (-- api-linter: core::0142::time-field-names=disabled
                     * aip.dev/not-precedent: Same as above. All other options sounds clumsy --)
                     */
                    createdByIdentity?: (string|null);

                    /** Rule description. */
                    description?: (string|null);
                }

                /** WorkflowRule describes a rule that can be applied to any workflow in this namespace. */
                class WorkflowRule implements IWorkflowRule {

                    /**
                     * Constructs a new WorkflowRule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.rules.v1.IWorkflowRule);

                    /** Rule creation time. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** Rule specification */
                    public spec?: (temporal.api.rules.v1.IWorkflowRuleSpec|null);

                    /**
                     * Identity of the actor that created the rule
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: It is better reflect the intent this way, we will also have updated_by. --)
                     * (-- api-linter: core::0142::time-field-names=disabled
                     * aip.dev/not-precedent: Same as above. All other options sounds clumsy --)
                     */
                    public createdByIdentity: string;

                    /** Rule description. */
                    public description: string;

                    /**
                     * Creates a new WorkflowRule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowRule instance
                     */
                    public static create(properties?: temporal.api.rules.v1.IWorkflowRule): temporal.api.rules.v1.WorkflowRule;

                    /**
                     * Encodes the specified WorkflowRule message. Does not implicitly {@link temporal.api.rules.v1.WorkflowRule.verify|verify} messages.
                     * @param message WorkflowRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.rules.v1.IWorkflowRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowRule message, length delimited. Does not implicitly {@link temporal.api.rules.v1.WorkflowRule.verify|verify} messages.
                     * @param message WorkflowRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.rules.v1.IWorkflowRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowRule message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowRule
                     * @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): temporal.api.rules.v1.WorkflowRule;

                    /**
                     * Decodes a WorkflowRule message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowRule
                     * @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)): temporal.api.rules.v1.WorkflowRule;

                    /**
                     * Creates a WorkflowRule message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowRule
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.rules.v1.WorkflowRule;

                    /**
                     * Creates a plain object from a WorkflowRule message. Also converts values to other types if specified.
                     * @param message WorkflowRule
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.rules.v1.WorkflowRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowRule to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowRule
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace schedule. */
        namespace schedule {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a CalendarSpec. */
                interface ICalendarSpec {

                    /** Expression to match seconds. Default: 0 */
                    second?: (string|null);

                    /** Expression to match minutes. Default: 0 */
                    minute?: (string|null);

                    /** Expression to match hours. Default: 0 */
                    hour?: (string|null);

                    /**
                     * Expression to match days of the month. Default: *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: standard name of field --)
                     */
                    dayOfMonth?: (string|null);

                    /** Expression to match months. Default: * */
                    month?: (string|null);

                    /** Expression to match years. Default: * */
                    year?: (string|null);

                    /** Expression to match days of the week. Default: * */
                    dayOfWeek?: (string|null);

                    /** Free-form comment describing the intention of this spec. */
                    comment?: (string|null);
                }

                /**
                 * CalendarSpec describes an event specification relative to the calendar,
                 * similar to a traditional cron specification, but with labeled fields. Each
                 * field can be one of:
                 * *: matches always
                 * x: matches when the field equals x
                 * x/y : matches when the field equals x+n*y where n is an integer
                 * x-z: matches when the field is between x and z inclusive
                 * w,x,y,...: matches when the field is one of the listed values
                 * Each x, y, z, ... is either a decimal integer, or a month or day of week name
                 * or abbreviation (in the appropriate fields).
                 * A timestamp matches if all fields match.
                 * Note that fields have different default values, for convenience.
                 * Note that the special case that some cron implementations have for treating
                 * day_of_month and day_of_week as "or" instead of "and" when both are set is
                 * not implemented.
                 * day_of_week can accept 0 or 7 as Sunday
                 * CalendarSpec gets compiled into StructuredCalendarSpec, which is what will be
                 * returned if you describe the schedule.
                 */
                class CalendarSpec implements ICalendarSpec {

                    /**
                     * Constructs a new CalendarSpec.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.ICalendarSpec);

                    /** Expression to match seconds. Default: 0 */
                    public second: string;

                    /** Expression to match minutes. Default: 0 */
                    public minute: string;

                    /** Expression to match hours. Default: 0 */
                    public hour: string;

                    /**
                     * Expression to match days of the month. Default: *
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: standard name of field --)
                     */
                    public dayOfMonth: string;

                    /** Expression to match months. Default: * */
                    public month: string;

                    /** Expression to match years. Default: * */
                    public year: string;

                    /** Expression to match days of the week. Default: * */
                    public dayOfWeek: string;

                    /** Free-form comment describing the intention of this spec. */
                    public comment: string;

                    /**
                     * Creates a new CalendarSpec instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CalendarSpec instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.ICalendarSpec): temporal.api.schedule.v1.CalendarSpec;

                    /**
                     * Encodes the specified CalendarSpec message. Does not implicitly {@link temporal.api.schedule.v1.CalendarSpec.verify|verify} messages.
                     * @param message CalendarSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.ICalendarSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CalendarSpec message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.CalendarSpec.verify|verify} messages.
                     * @param message CalendarSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.ICalendarSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CalendarSpec message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CalendarSpec
                     * @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): temporal.api.schedule.v1.CalendarSpec;

                    /**
                     * Decodes a CalendarSpec message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CalendarSpec
                     * @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)): temporal.api.schedule.v1.CalendarSpec;

                    /**
                     * Creates a CalendarSpec message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CalendarSpec
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.CalendarSpec;

                    /**
                     * Creates a plain object from a CalendarSpec message. Also converts values to other types if specified.
                     * @param message CalendarSpec
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.CalendarSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CalendarSpec to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CalendarSpec
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Range. */
                interface IRange {

                    /** Start of range (inclusive). */
                    start?: (number|null);

                    /** End of range (inclusive). */
                    end?: (number|null);

                    /** Step (optional, default 1). */
                    step?: (number|null);
                }

                /**
                 * Range represents a set of integer values, used to match fields of a calendar
                 * time in StructuredCalendarSpec. If end < start, then end is interpreted as
                 * equal to start. This means you can use a Range with start set to a value, and
                 * end and step unset (defaulting to 0) to represent a single value.
                 */
                class Range implements IRange {

                    /**
                     * Constructs a new Range.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.IRange);

                    /** Start of range (inclusive). */
                    public start: number;

                    /** End of range (inclusive). */
                    public end: number;

                    /** Step (optional, default 1). */
                    public step: number;

                    /**
                     * Creates a new Range instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Range instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.IRange): temporal.api.schedule.v1.Range;

                    /**
                     * Encodes the specified Range message. Does not implicitly {@link temporal.api.schedule.v1.Range.verify|verify} messages.
                     * @param message Range message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.IRange, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Range message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.Range.verify|verify} messages.
                     * @param message Range message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.IRange, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Range message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Range
                     * @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): temporal.api.schedule.v1.Range;

                    /**
                     * Decodes a Range message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Range
                     * @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)): temporal.api.schedule.v1.Range;

                    /**
                     * Creates a Range message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Range
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.Range;

                    /**
                     * Creates a plain object from a Range message. Also converts values to other types if specified.
                     * @param message Range
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.Range, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Range to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Range
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StructuredCalendarSpec. */
                interface IStructuredCalendarSpec {

                    /** Match seconds (0-59) */
                    second?: (temporal.api.schedule.v1.IRange[]|null);

                    /** Match minutes (0-59) */
                    minute?: (temporal.api.schedule.v1.IRange[]|null);

                    /** Match hours (0-23) */
                    hour?: (temporal.api.schedule.v1.IRange[]|null);

                    /**
                     * Match days of the month (1-31)
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: standard name of field --)
                     */
                    dayOfMonth?: (temporal.api.schedule.v1.IRange[]|null);

                    /** Match months (1-12) */
                    month?: (temporal.api.schedule.v1.IRange[]|null);

                    /** Match years. */
                    year?: (temporal.api.schedule.v1.IRange[]|null);

                    /** Match days of the week (0-6; 0 is Sunday). */
                    dayOfWeek?: (temporal.api.schedule.v1.IRange[]|null);

                    /** Free-form comment describing the intention of this spec. */
                    comment?: (string|null);
                }

                /**
                 * StructuredCalendarSpec describes an event specification relative to the
                 * calendar, in a form that's easy to work with programmatically. Each field can
                 * be one or more ranges.
                 * A timestamp matches if at least one range of each field matches the
                 * corresponding fields of the timestamp, except for year: if year is missing,
                 * that means all years match. For all fields besides year, at least one Range
                 * must be present to match anything.
                 * Relative expressions such as "last day of the month" or "third Monday" are not currently
                 * representable; callers must enumerate the concrete days they require.
                 */
                class StructuredCalendarSpec implements IStructuredCalendarSpec {

                    /**
                     * Constructs a new StructuredCalendarSpec.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.IStructuredCalendarSpec);

                    /** Match seconds (0-59) */
                    public second: temporal.api.schedule.v1.IRange[];

                    /** Match minutes (0-59) */
                    public minute: temporal.api.schedule.v1.IRange[];

                    /** Match hours (0-23) */
                    public hour: temporal.api.schedule.v1.IRange[];

                    /**
                     * Match days of the month (1-31)
                     * (-- api-linter: core::0140::prepositions=disabled
                     * aip.dev/not-precedent: standard name of field --)
                     */
                    public dayOfMonth: temporal.api.schedule.v1.IRange[];

                    /** Match months (1-12) */
                    public month: temporal.api.schedule.v1.IRange[];

                    /** Match years. */
                    public year: temporal.api.schedule.v1.IRange[];

                    /** Match days of the week (0-6; 0 is Sunday). */
                    public dayOfWeek: temporal.api.schedule.v1.IRange[];

                    /** Free-form comment describing the intention of this spec. */
                    public comment: string;

                    /**
                     * Creates a new StructuredCalendarSpec instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StructuredCalendarSpec instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.IStructuredCalendarSpec): temporal.api.schedule.v1.StructuredCalendarSpec;

                    /**
                     * Encodes the specified StructuredCalendarSpec message. Does not implicitly {@link temporal.api.schedule.v1.StructuredCalendarSpec.verify|verify} messages.
                     * @param message StructuredCalendarSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.IStructuredCalendarSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StructuredCalendarSpec message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.StructuredCalendarSpec.verify|verify} messages.
                     * @param message StructuredCalendarSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.IStructuredCalendarSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StructuredCalendarSpec message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StructuredCalendarSpec
                     * @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): temporal.api.schedule.v1.StructuredCalendarSpec;

                    /**
                     * Decodes a StructuredCalendarSpec message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StructuredCalendarSpec
                     * @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)): temporal.api.schedule.v1.StructuredCalendarSpec;

                    /**
                     * Creates a StructuredCalendarSpec message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StructuredCalendarSpec
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.StructuredCalendarSpec;

                    /**
                     * Creates a plain object from a StructuredCalendarSpec message. Also converts values to other types if specified.
                     * @param message StructuredCalendarSpec
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.StructuredCalendarSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StructuredCalendarSpec to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StructuredCalendarSpec
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an IntervalSpec. */
                interface IIntervalSpec {

                    /** IntervalSpec interval */
                    interval?: (google.protobuf.IDuration|null);

                    /** IntervalSpec phase */
                    phase?: (google.protobuf.IDuration|null);
                }

                /**
                 * IntervalSpec matches times that can be expressed as:
                 * epoch + n * interval + phase
                 * where n is an integer.
                 * phase defaults to zero if missing. interval is required.
                 * Both interval and phase must be non-negative and are truncated to the nearest
                 * second before any calculations.
                 * For example, an interval of 1 hour with phase of zero would match every hour,
                 * on the hour. The same interval but a phase of 19 minutes would match every
                 * xx:19:00. An interval of 28 days with phase zero would match
                 * 2022-02-17T00:00:00Z (among other times). The same interval with a phase of 3
                 * days, 5 hours, and 23 minutes would match 2022-02-20T05:23:00Z instead.
                 */
                class IntervalSpec implements IIntervalSpec {

                    /**
                     * Constructs a new IntervalSpec.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.IIntervalSpec);

                    /** IntervalSpec interval. */
                    public interval?: (google.protobuf.IDuration|null);

                    /** IntervalSpec phase. */
                    public phase?: (google.protobuf.IDuration|null);

                    /**
                     * Creates a new IntervalSpec instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns IntervalSpec instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.IIntervalSpec): temporal.api.schedule.v1.IntervalSpec;

                    /**
                     * Encodes the specified IntervalSpec message. Does not implicitly {@link temporal.api.schedule.v1.IntervalSpec.verify|verify} messages.
                     * @param message IntervalSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.IIntervalSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified IntervalSpec message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.IntervalSpec.verify|verify} messages.
                     * @param message IntervalSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.IIntervalSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an IntervalSpec message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns IntervalSpec
                     * @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): temporal.api.schedule.v1.IntervalSpec;

                    /**
                     * Decodes an IntervalSpec message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns IntervalSpec
                     * @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)): temporal.api.schedule.v1.IntervalSpec;

                    /**
                     * Creates an IntervalSpec message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns IntervalSpec
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.IntervalSpec;

                    /**
                     * Creates a plain object from an IntervalSpec message. Also converts values to other types if specified.
                     * @param message IntervalSpec
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.IntervalSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this IntervalSpec to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for IntervalSpec
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ScheduleSpec. */
                interface IScheduleSpec {

                    /** Calendar-based specifications of times. */
                    structuredCalendar?: (temporal.api.schedule.v1.IStructuredCalendarSpec[]|null);

                    /**
                     * cron_string holds a traditional cron specification as a string. It
                     * accepts 5, 6, or 7 fields, separated by spaces, and interprets them the
                     * same way as CalendarSpec.
                     * 5 fields:         minute, hour, day_of_month, month, day_of_week
                     * 6 fields:         minute, hour, day_of_month, month, day_of_week, year
                     * 7 fields: second, minute, hour, day_of_month, month, day_of_week, year
                     * If year is not given, it defaults to *. If second is not given, it
                     * defaults to 0.
                     * Shorthands `@yearly`, `@monthly`, `@weekly`, `@daily`, and `@hourly` are also
                     * accepted instead of the 5-7 time fields.
                     * Optionally, the string can be preceded by CRON_TZ=`<timezone name>` or
                     * TZ=`<timezone name>`, which will get copied to timezone_name. (There must
                     * not also be a timezone_name present.)
                     * Optionally "#" followed by a comment can appear at the end of the string.
                     * Note that the special case that some cron implementations have for
                     * treating day_of_month and day_of_week as "or" instead of "and" when both
                     * are set is not implemented.
                     * `@every` `<interval>`[/`<phase>`] is accepted and gets compiled into an
                     * IntervalSpec instead. `<interval>` and `<phase>` should be a decimal integer
                     * with a unit suffix s, m, h, or d.
                     */
                    cronString?: (string[]|null);

                    /** Calendar-based specifications of times. */
                    calendar?: (temporal.api.schedule.v1.ICalendarSpec[]|null);

                    /** Interval-based specifications of times. */
                    interval?: (temporal.api.schedule.v1.IIntervalSpec[]|null);

                    /**
                     * Any timestamps matching any of exclude_* will be skipped.
                     * Deprecated. Use exclude_structured_calendar.
                     */
                    excludeCalendar?: (temporal.api.schedule.v1.ICalendarSpec[]|null);

                    /** ScheduleSpec excludeStructuredCalendar */
                    excludeStructuredCalendar?: (temporal.api.schedule.v1.IStructuredCalendarSpec[]|null);

                    /**
                     * If start_time is set, any timestamps before start_time will be skipped.
                     * (Together, start_time and end_time make an inclusive interval.)
                     */
                    startTime?: (google.protobuf.ITimestamp|null);

                    /** If end_time is set, any timestamps after end_time will be skipped. */
                    endTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * All timestamps will be incremented by a random value from 0 to this
                     * amount of jitter. Default: 0
                     */
                    jitter?: (google.protobuf.IDuration|null);

                    /**
                     * Time zone to interpret all calendar-based specs in.
                     *
                     * If unset, defaults to UTC. We recommend using UTC for your application if
                     * at all possible, to avoid various surprising properties of time zones.
                     *
                     * Time zones may be provided by name, corresponding to names in the IANA
                     * time zone database (see https://www.iana.org/time-zones). The definition
                     * will be loaded by the Temporal server from the environment it runs in.
                     *
                     * If your application requires more control over the time zone definition
                     * used, it may pass in a complete definition in the form of a TZif file
                     * from the time zone database. If present, this will be used instead of
                     * loading anything from the environment. You are then responsible for
                     * updating timezone_data when the definition changes.
                     *
                     * Calendar spec matching is based on literal matching of the clock time
                     * with no special handling of DST: if you write a calendar spec that fires
                     * at 2:30am and specify a time zone that follows DST, that action will not
                     * be triggered on the day that has no 2:30am. Similarly, an action that
                     * fires at 1:30am will be triggered twice on the day that has two 1:30s.
                     *
                     * Also note that no actions are taken on leap-seconds (e.g. 23:59:60 UTC).
                     */
                    timezoneName?: (string|null);

                    /** ScheduleSpec timezoneData */
                    timezoneData?: (Uint8Array|null);
                }

                /**
                 * ScheduleSpec is a complete description of a set of absolute timestamps
                 * (possibly infinite) that an action should occur at. The meaning of a
                 * ScheduleSpec depends only on its contents and never changes, except that the
                 * definition of a time zone can change over time (most commonly, when daylight
                 * saving time policy changes for an area). To create a totally self-contained
                 * ScheduleSpec, use UTC or include timezone_data.
                 *
                 * For input, you can provide zero or more of: structured_calendar, calendar,
                 * cron_string, interval, and exclude_structured_calendar, and all of them will
                 * be used (the schedule will take action at the union of all of their times,
                 * minus the ones that match exclude_structured_calendar).
                 *
                 * On input, calendar and cron_string fields will be compiled into
                 * structured_calendar (and maybe interval and timezone_name), so if you
                 * Describe a schedule, you'll see only structured_calendar, interval, etc.
                 *
                 * If a spec has no matching times after the current time, then the schedule
                 * will be subject to automatic deletion (after several days).
                 */
                class ScheduleSpec implements IScheduleSpec {

                    /**
                     * Constructs a new ScheduleSpec.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.IScheduleSpec);

                    /** Calendar-based specifications of times. */
                    public structuredCalendar: temporal.api.schedule.v1.IStructuredCalendarSpec[];

                    /**
                     * cron_string holds a traditional cron specification as a string. It
                     * accepts 5, 6, or 7 fields, separated by spaces, and interprets them the
                     * same way as CalendarSpec.
                     * 5 fields:         minute, hour, day_of_month, month, day_of_week
                     * 6 fields:         minute, hour, day_of_month, month, day_of_week, year
                     * 7 fields: second, minute, hour, day_of_month, month, day_of_week, year
                     * If year is not given, it defaults to *. If second is not given, it
                     * defaults to 0.
                     * Shorthands `@yearly`, `@monthly`, `@weekly`, `@daily`, and `@hourly` are also
                     * accepted instead of the 5-7 time fields.
                     * Optionally, the string can be preceded by CRON_TZ=`<timezone name>` or
                     * TZ=`<timezone name>`, which will get copied to timezone_name. (There must
                     * not also be a timezone_name present.)
                     * Optionally "#" followed by a comment can appear at the end of the string.
                     * Note that the special case that some cron implementations have for
                     * treating day_of_month and day_of_week as "or" instead of "and" when both
                     * are set is not implemented.
                     * `@every` `<interval>`[/`<phase>`] is accepted and gets compiled into an
                     * IntervalSpec instead. `<interval>` and `<phase>` should be a decimal integer
                     * with a unit suffix s, m, h, or d.
                     */
                    public cronString: string[];

                    /** Calendar-based specifications of times. */
                    public calendar: temporal.api.schedule.v1.ICalendarSpec[];

                    /** Interval-based specifications of times. */
                    public interval: temporal.api.schedule.v1.IIntervalSpec[];

                    /**
                     * Any timestamps matching any of exclude_* will be skipped.
                     * Deprecated. Use exclude_structured_calendar.
                     */
                    public excludeCalendar: temporal.api.schedule.v1.ICalendarSpec[];

                    /** ScheduleSpec excludeStructuredCalendar. */
                    public excludeStructuredCalendar: temporal.api.schedule.v1.IStructuredCalendarSpec[];

                    /**
                     * If start_time is set, any timestamps before start_time will be skipped.
                     * (Together, start_time and end_time make an inclusive interval.)
                     */
                    public startTime?: (google.protobuf.ITimestamp|null);

                    /** If end_time is set, any timestamps after end_time will be skipped. */
                    public endTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * All timestamps will be incremented by a random value from 0 to this
                     * amount of jitter. Default: 0
                     */
                    public jitter?: (google.protobuf.IDuration|null);

                    /**
                     * Time zone to interpret all calendar-based specs in.
                     *
                     * If unset, defaults to UTC. We recommend using UTC for your application if
                     * at all possible, to avoid various surprising properties of time zones.
                     *
                     * Time zones may be provided by name, corresponding to names in the IANA
                     * time zone database (see https://www.iana.org/time-zones). The definition
                     * will be loaded by the Temporal server from the environment it runs in.
                     *
                     * If your application requires more control over the time zone definition
                     * used, it may pass in a complete definition in the form of a TZif file
                     * from the time zone database. If present, this will be used instead of
                     * loading anything from the environment. You are then responsible for
                     * updating timezone_data when the definition changes.
                     *
                     * Calendar spec matching is based on literal matching of the clock time
                     * with no special handling of DST: if you write a calendar spec that fires
                     * at 2:30am and specify a time zone that follows DST, that action will not
                     * be triggered on the day that has no 2:30am. Similarly, an action that
                     * fires at 1:30am will be triggered twice on the day that has two 1:30s.
                     *
                     * Also note that no actions are taken on leap-seconds (e.g. 23:59:60 UTC).
                     */
                    public timezoneName: string;

                    /** ScheduleSpec timezoneData. */
                    public timezoneData: Uint8Array;

                    /**
                     * Creates a new ScheduleSpec instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ScheduleSpec instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.IScheduleSpec): temporal.api.schedule.v1.ScheduleSpec;

                    /**
                     * Encodes the specified ScheduleSpec message. Does not implicitly {@link temporal.api.schedule.v1.ScheduleSpec.verify|verify} messages.
                     * @param message ScheduleSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.IScheduleSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ScheduleSpec message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.ScheduleSpec.verify|verify} messages.
                     * @param message ScheduleSpec message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.IScheduleSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ScheduleSpec message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ScheduleSpec
                     * @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): temporal.api.schedule.v1.ScheduleSpec;

                    /**
                     * Decodes a ScheduleSpec message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ScheduleSpec
                     * @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)): temporal.api.schedule.v1.ScheduleSpec;

                    /**
                     * Creates a ScheduleSpec message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ScheduleSpec
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.ScheduleSpec;

                    /**
                     * Creates a plain object from a ScheduleSpec message. Also converts values to other types if specified.
                     * @param message ScheduleSpec
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.ScheduleSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ScheduleSpec to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ScheduleSpec
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SchedulePolicies. */
                interface ISchedulePolicies {

                    /**
                     * Policy for overlaps.
                     * Note that this can be changed after a schedule has taken some actions,
                     * and some changes might produce unintuitive results. In general, the later
                     * policy overrides the earlier policy.
                     */
                    overlapPolicy?: (temporal.api.enums.v1.ScheduleOverlapPolicy|null);

                    /**
                     * Policy for catchups:
                     * If the Temporal server misses an action due to one or more components
                     * being down, and comes back up, the action will be run if the scheduled
                     * time is within this window from the current time.
                     * This value defaults to one year, and can't be less than 10 seconds.
                     */
                    catchupWindow?: (google.protobuf.IDuration|null);

                    /**
                     * If true, and a workflow run fails or times out, turn on "paused".
                     * This applies after retry policies: the full chain of retries must fail to
                     * trigger a pause here.
                     */
                    pauseOnFailure?: (boolean|null);

                    /**
                     * If true, and the action would start a workflow, a timestamp will not be
                     * appended to the scheduled workflow id.
                     */
                    keepOriginalWorkflowId?: (boolean|null);
                }

                /** Represents a SchedulePolicies. */
                class SchedulePolicies implements ISchedulePolicies {

                    /**
                     * Constructs a new SchedulePolicies.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.ISchedulePolicies);

                    /**
                     * Policy for overlaps.
                     * Note that this can be changed after a schedule has taken some actions,
                     * and some changes might produce unintuitive results. In general, the later
                     * policy overrides the earlier policy.
                     */
                    public overlapPolicy: temporal.api.enums.v1.ScheduleOverlapPolicy;

                    /**
                     * Policy for catchups:
                     * If the Temporal server misses an action due to one or more components
                     * being down, and comes back up, the action will be run if the scheduled
                     * time is within this window from the current time.
                     * This value defaults to one year, and can't be less than 10 seconds.
                     */
                    public catchupWindow?: (google.protobuf.IDuration|null);

                    /**
                     * If true, and a workflow run fails or times out, turn on "paused".
                     * This applies after retry policies: the full chain of retries must fail to
                     * trigger a pause here.
                     */
                    public pauseOnFailure: boolean;

                    /**
                     * If true, and the action would start a workflow, a timestamp will not be
                     * appended to the scheduled workflow id.
                     */
                    public keepOriginalWorkflowId: boolean;

                    /**
                     * Creates a new SchedulePolicies instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SchedulePolicies instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.ISchedulePolicies): temporal.api.schedule.v1.SchedulePolicies;

                    /**
                     * Encodes the specified SchedulePolicies message. Does not implicitly {@link temporal.api.schedule.v1.SchedulePolicies.verify|verify} messages.
                     * @param message SchedulePolicies message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.ISchedulePolicies, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SchedulePolicies message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.SchedulePolicies.verify|verify} messages.
                     * @param message SchedulePolicies message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.ISchedulePolicies, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SchedulePolicies message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SchedulePolicies
                     * @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): temporal.api.schedule.v1.SchedulePolicies;

                    /**
                     * Decodes a SchedulePolicies message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SchedulePolicies
                     * @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)): temporal.api.schedule.v1.SchedulePolicies;

                    /**
                     * Creates a SchedulePolicies message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SchedulePolicies
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.SchedulePolicies;

                    /**
                     * Creates a plain object from a SchedulePolicies message. Also converts values to other types if specified.
                     * @param message SchedulePolicies
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.SchedulePolicies, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SchedulePolicies to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SchedulePolicies
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ScheduleAction. */
                interface IScheduleAction {

                    /**
                     * All fields of NewWorkflowExecutionInfo are valid except for:
                     * - workflow_id_reuse_policy
                     * - cron_schedule
                     * The workflow id of the started workflow may not match this exactly,
                     * it may have a timestamp appended for uniqueness.
                     */
                    startWorkflow?: (temporal.api.workflow.v1.INewWorkflowExecutionInfo|null);
                }

                /** Represents a ScheduleAction. */
                class ScheduleAction implements IScheduleAction {

                    /**
                     * Constructs a new ScheduleAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.IScheduleAction);

                    /**
                     * All fields of NewWorkflowExecutionInfo are valid except for:
                     * - workflow_id_reuse_policy
                     * - cron_schedule
                     * The workflow id of the started workflow may not match this exactly,
                     * it may have a timestamp appended for uniqueness.
                     */
                    public startWorkflow?: (temporal.api.workflow.v1.INewWorkflowExecutionInfo|null);

                    /** ScheduleAction action. */
                    public action?: "startWorkflow";

                    /**
                     * Creates a new ScheduleAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ScheduleAction instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.IScheduleAction): temporal.api.schedule.v1.ScheduleAction;

                    /**
                     * Encodes the specified ScheduleAction message. Does not implicitly {@link temporal.api.schedule.v1.ScheduleAction.verify|verify} messages.
                     * @param message ScheduleAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.IScheduleAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ScheduleAction message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.ScheduleAction.verify|verify} messages.
                     * @param message ScheduleAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.IScheduleAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ScheduleAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ScheduleAction
                     * @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): temporal.api.schedule.v1.ScheduleAction;

                    /**
                     * Decodes a ScheduleAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ScheduleAction
                     * @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)): temporal.api.schedule.v1.ScheduleAction;

                    /**
                     * Creates a ScheduleAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ScheduleAction
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.ScheduleAction;

                    /**
                     * Creates a plain object from a ScheduleAction message. Also converts values to other types if specified.
                     * @param message ScheduleAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.ScheduleAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ScheduleAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ScheduleAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ScheduleActionResult. */
                interface IScheduleActionResult {

                    /** Time that the action was taken (according to the schedule, including jitter). */
                    scheduleTime?: (google.protobuf.ITimestamp|null);

                    /** Time that the action was taken (real time). */
                    actualTime?: (google.protobuf.ITimestamp|null);

                    /** If action was start_workflow: */
                    startWorkflowResult?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * If the action was start_workflow, this field will reflect an
                     * eventually-consistent view of the started workflow's status.
                     */
                    startWorkflowStatus?: (temporal.api.enums.v1.WorkflowExecutionStatus|null);
                }

                /** Represents a ScheduleActionResult. */
                class ScheduleActionResult implements IScheduleActionResult {

                    /**
                     * Constructs a new ScheduleActionResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.IScheduleActionResult);

                    /** Time that the action was taken (according to the schedule, including jitter). */
                    public scheduleTime?: (google.protobuf.ITimestamp|null);

                    /** Time that the action was taken (real time). */
                    public actualTime?: (google.protobuf.ITimestamp|null);

                    /** If action was start_workflow: */
                    public startWorkflowResult?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /**
                     * If the action was start_workflow, this field will reflect an
                     * eventually-consistent view of the started workflow's status.
                     */
                    public startWorkflowStatus: temporal.api.enums.v1.WorkflowExecutionStatus;

                    /**
                     * Creates a new ScheduleActionResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ScheduleActionResult instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.IScheduleActionResult): temporal.api.schedule.v1.ScheduleActionResult;

                    /**
                     * Encodes the specified ScheduleActionResult message. Does not implicitly {@link temporal.api.schedule.v1.ScheduleActionResult.verify|verify} messages.
                     * @param message ScheduleActionResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.IScheduleActionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ScheduleActionResult message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.ScheduleActionResult.verify|verify} messages.
                     * @param message ScheduleActionResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.IScheduleActionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ScheduleActionResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ScheduleActionResult
                     * @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): temporal.api.schedule.v1.ScheduleActionResult;

                    /**
                     * Decodes a ScheduleActionResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ScheduleActionResult
                     * @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)): temporal.api.schedule.v1.ScheduleActionResult;

                    /**
                     * Creates a ScheduleActionResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ScheduleActionResult
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.ScheduleActionResult;

                    /**
                     * Creates a plain object from a ScheduleActionResult message. Also converts values to other types if specified.
                     * @param message ScheduleActionResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.ScheduleActionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ScheduleActionResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ScheduleActionResult
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ScheduleState. */
                interface IScheduleState {

                    /**
                     * Informative human-readable message with contextual notes, e.g. the reason
                     * a schedule is paused. The system may overwrite this message on certain
                     * conditions, e.g. when pause-on-failure happens.
                     */
                    notes?: (string|null);

                    /** If true, do not take any actions based on the schedule spec. */
                    paused?: (boolean|null);

                    /**
                     * If limited_actions is true, decrement remaining_actions after each
                     * action, and do not take any more scheduled actions if remaining_actions
                     * is zero. Actions may still be taken by explicit request (i.e. trigger
                     * immediately or backfill). Skipped actions (due to overlap policy) do not
                     * count against remaining actions.
                     * If a schedule has no more remaining actions, then the schedule will be
                     * subject to automatic deletion (after several days).
                     */
                    limitedActions?: (boolean|null);

                    /** ScheduleState remainingActions */
                    remainingActions?: (Long|null);
                }

                /** Represents a ScheduleState. */
                class ScheduleState implements IScheduleState {

                    /**
                     * Constructs a new ScheduleState.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.IScheduleState);

                    /**
                     * Informative human-readable message with contextual notes, e.g. the reason
                     * a schedule is paused. The system may overwrite this message on certain
                     * conditions, e.g. when pause-on-failure happens.
                     */
                    public notes: string;

                    /** If true, do not take any actions based on the schedule spec. */
                    public paused: boolean;

                    /**
                     * If limited_actions is true, decrement remaining_actions after each
                     * action, and do not take any more scheduled actions if remaining_actions
                     * is zero. Actions may still be taken by explicit request (i.e. trigger
                     * immediately or backfill). Skipped actions (due to overlap policy) do not
                     * count against remaining actions.
                     * If a schedule has no more remaining actions, then the schedule will be
                     * subject to automatic deletion (after several days).
                     */
                    public limitedActions: boolean;

                    /** ScheduleState remainingActions. */
                    public remainingActions: Long;

                    /**
                     * Creates a new ScheduleState instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ScheduleState instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.IScheduleState): temporal.api.schedule.v1.ScheduleState;

                    /**
                     * Encodes the specified ScheduleState message. Does not implicitly {@link temporal.api.schedule.v1.ScheduleState.verify|verify} messages.
                     * @param message ScheduleState message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.IScheduleState, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ScheduleState message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.ScheduleState.verify|verify} messages.
                     * @param message ScheduleState message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.IScheduleState, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ScheduleState message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ScheduleState
                     * @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): temporal.api.schedule.v1.ScheduleState;

                    /**
                     * Decodes a ScheduleState message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ScheduleState
                     * @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)): temporal.api.schedule.v1.ScheduleState;

                    /**
                     * Creates a ScheduleState message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ScheduleState
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.ScheduleState;

                    /**
                     * Creates a plain object from a ScheduleState message. Also converts values to other types if specified.
                     * @param message ScheduleState
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.ScheduleState, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ScheduleState to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ScheduleState
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TriggerImmediatelyRequest. */
                interface ITriggerImmediatelyRequest {

                    /** If set, override overlap policy for this one request. */
                    overlapPolicy?: (temporal.api.enums.v1.ScheduleOverlapPolicy|null);

                    /**
                     * Timestamp used for the identity of the target workflow.
                     * If not set the default value is the current time.
                     */
                    scheduledTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a TriggerImmediatelyRequest. */
                class TriggerImmediatelyRequest implements ITriggerImmediatelyRequest {

                    /**
                     * Constructs a new TriggerImmediatelyRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.ITriggerImmediatelyRequest);

                    /** If set, override overlap policy for this one request. */
                    public overlapPolicy: temporal.api.enums.v1.ScheduleOverlapPolicy;

                    /**
                     * Timestamp used for the identity of the target workflow.
                     * If not set the default value is the current time.
                     */
                    public scheduledTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new TriggerImmediatelyRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TriggerImmediatelyRequest instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.ITriggerImmediatelyRequest): temporal.api.schedule.v1.TriggerImmediatelyRequest;

                    /**
                     * Encodes the specified TriggerImmediatelyRequest message. Does not implicitly {@link temporal.api.schedule.v1.TriggerImmediatelyRequest.verify|verify} messages.
                     * @param message TriggerImmediatelyRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.ITriggerImmediatelyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TriggerImmediatelyRequest message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.TriggerImmediatelyRequest.verify|verify} messages.
                     * @param message TriggerImmediatelyRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.ITriggerImmediatelyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TriggerImmediatelyRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TriggerImmediatelyRequest
                     * @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): temporal.api.schedule.v1.TriggerImmediatelyRequest;

                    /**
                     * Decodes a TriggerImmediatelyRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TriggerImmediatelyRequest
                     * @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)): temporal.api.schedule.v1.TriggerImmediatelyRequest;

                    /**
                     * Creates a TriggerImmediatelyRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TriggerImmediatelyRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.TriggerImmediatelyRequest;

                    /**
                     * Creates a plain object from a TriggerImmediatelyRequest message. Also converts values to other types if specified.
                     * @param message TriggerImmediatelyRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.TriggerImmediatelyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TriggerImmediatelyRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TriggerImmediatelyRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BackfillRequest. */
                interface IBackfillRequest {

                    /**
                     * Time range to evaluate schedule in. Currently, this time range is
                     * exclusive on start_time and inclusive on end_time. (This is admittedly
                     * counterintuitive and it may change in the future, so to be safe, use a
                     * start time strictly before a scheduled time.) Also note that an action
                     * nominally scheduled in the interval but with jitter that pushes it after
                     * end_time will not be included.
                     */
                    startTime?: (google.protobuf.ITimestamp|null);

                    /** BackfillRequest endTime */
                    endTime?: (google.protobuf.ITimestamp|null);

                    /** If set, override overlap policy for this request. */
                    overlapPolicy?: (temporal.api.enums.v1.ScheduleOverlapPolicy|null);
                }

                /** Represents a BackfillRequest. */
                class BackfillRequest implements IBackfillRequest {

                    /**
                     * Constructs a new BackfillRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.IBackfillRequest);

                    /**
                     * Time range to evaluate schedule in. Currently, this time range is
                     * exclusive on start_time and inclusive on end_time. (This is admittedly
                     * counterintuitive and it may change in the future, so to be safe, use a
                     * start time strictly before a scheduled time.) Also note that an action
                     * nominally scheduled in the interval but with jitter that pushes it after
                     * end_time will not be included.
                     */
                    public startTime?: (google.protobuf.ITimestamp|null);

                    /** BackfillRequest endTime. */
                    public endTime?: (google.protobuf.ITimestamp|null);

                    /** If set, override overlap policy for this request. */
                    public overlapPolicy: temporal.api.enums.v1.ScheduleOverlapPolicy;

                    /**
                     * Creates a new BackfillRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BackfillRequest instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.IBackfillRequest): temporal.api.schedule.v1.BackfillRequest;

                    /**
                     * Encodes the specified BackfillRequest message. Does not implicitly {@link temporal.api.schedule.v1.BackfillRequest.verify|verify} messages.
                     * @param message BackfillRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.IBackfillRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BackfillRequest message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.BackfillRequest.verify|verify} messages.
                     * @param message BackfillRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.IBackfillRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BackfillRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BackfillRequest
                     * @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): temporal.api.schedule.v1.BackfillRequest;

                    /**
                     * Decodes a BackfillRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BackfillRequest
                     * @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)): temporal.api.schedule.v1.BackfillRequest;

                    /**
                     * Creates a BackfillRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BackfillRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.BackfillRequest;

                    /**
                     * Creates a plain object from a BackfillRequest message. Also converts values to other types if specified.
                     * @param message BackfillRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.BackfillRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BackfillRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BackfillRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SchedulePatch. */
                interface ISchedulePatch {

                    /** If set, trigger one action immediately. */
                    triggerImmediately?: (temporal.api.schedule.v1.ITriggerImmediatelyRequest|null);

                    /**
                     * If set, runs though the specified time period(s) and takes actions as if that time
                     * passed by right now, all at once. The overlap policy can be overridden for the
                     * scope of the backfill.
                     */
                    backfillRequest?: (temporal.api.schedule.v1.IBackfillRequest[]|null);

                    /**
                     * If set, change the state to paused or unpaused (respectively) and set the
                     * notes field to the value of the string.
                     */
                    pause?: (string|null);

                    /** SchedulePatch unpause */
                    unpause?: (string|null);
                }

                /** Represents a SchedulePatch. */
                class SchedulePatch implements ISchedulePatch {

                    /**
                     * Constructs a new SchedulePatch.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.ISchedulePatch);

                    /** If set, trigger one action immediately. */
                    public triggerImmediately?: (temporal.api.schedule.v1.ITriggerImmediatelyRequest|null);

                    /**
                     * If set, runs though the specified time period(s) and takes actions as if that time
                     * passed by right now, all at once. The overlap policy can be overridden for the
                     * scope of the backfill.
                     */
                    public backfillRequest: temporal.api.schedule.v1.IBackfillRequest[];

                    /**
                     * If set, change the state to paused or unpaused (respectively) and set the
                     * notes field to the value of the string.
                     */
                    public pause: string;

                    /** SchedulePatch unpause. */
                    public unpause: string;

                    /**
                     * Creates a new SchedulePatch instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SchedulePatch instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.ISchedulePatch): temporal.api.schedule.v1.SchedulePatch;

                    /**
                     * Encodes the specified SchedulePatch message. Does not implicitly {@link temporal.api.schedule.v1.SchedulePatch.verify|verify} messages.
                     * @param message SchedulePatch message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.ISchedulePatch, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SchedulePatch message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.SchedulePatch.verify|verify} messages.
                     * @param message SchedulePatch message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.ISchedulePatch, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SchedulePatch message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SchedulePatch
                     * @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): temporal.api.schedule.v1.SchedulePatch;

                    /**
                     * Decodes a SchedulePatch message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SchedulePatch
                     * @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)): temporal.api.schedule.v1.SchedulePatch;

                    /**
                     * Creates a SchedulePatch message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SchedulePatch
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.SchedulePatch;

                    /**
                     * Creates a plain object from a SchedulePatch message. Also converts values to other types if specified.
                     * @param message SchedulePatch
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.SchedulePatch, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SchedulePatch to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SchedulePatch
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ScheduleInfo. */
                interface IScheduleInfo {

                    /** Number of actions taken so far. */
                    actionCount?: (Long|null);

                    /** Number of times a scheduled action was skipped due to missing the catchup window. */
                    missedCatchupWindow?: (Long|null);

                    /** Number of skipped actions due to overlap. */
                    overlapSkipped?: (Long|null);

                    /** Number of dropped actions due to buffer limit. */
                    bufferDropped?: (Long|null);

                    /**
                     * Number of actions in the buffer. The buffer holds the actions that cannot
                     * be immediately triggered (due to the overlap policy). These actions can be a result of
                     * the normal schedule or a backfill.
                     */
                    bufferSize?: (Long|null);

                    /**
                     * Currently-running workflows started by this schedule. (There might be
                     * more than one if the overlap policy allows overlaps.)
                     * Note that the run_ids in here are the original execution run ids as
                     * started by the schedule. If the workflows retried, did continue-as-new,
                     * or were reset, they might still be running but with a different run_id.
                     */
                    runningWorkflows?: (temporal.api.common.v1.IWorkflowExecution[]|null);

                    /** Most recent ten actual action times (including manual triggers). */
                    recentActions?: (temporal.api.schedule.v1.IScheduleActionResult[]|null);

                    /** Next ten scheduled action times. */
                    futureActionTimes?: (google.protobuf.ITimestamp[]|null);

                    /** Timestamps of schedule creation and last update. */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** ScheduleInfo updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** Deprecated. */
                    invalidScheduleError?: (string|null);
                }

                /** Represents a ScheduleInfo. */
                class ScheduleInfo implements IScheduleInfo {

                    /**
                     * Constructs a new ScheduleInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.IScheduleInfo);

                    /** Number of actions taken so far. */
                    public actionCount: Long;

                    /** Number of times a scheduled action was skipped due to missing the catchup window. */
                    public missedCatchupWindow: Long;

                    /** Number of skipped actions due to overlap. */
                    public overlapSkipped: Long;

                    /** Number of dropped actions due to buffer limit. */
                    public bufferDropped: Long;

                    /**
                     * Number of actions in the buffer. The buffer holds the actions that cannot
                     * be immediately triggered (due to the overlap policy). These actions can be a result of
                     * the normal schedule or a backfill.
                     */
                    public bufferSize: Long;

                    /**
                     * Currently-running workflows started by this schedule. (There might be
                     * more than one if the overlap policy allows overlaps.)
                     * Note that the run_ids in here are the original execution run ids as
                     * started by the schedule. If the workflows retried, did continue-as-new,
                     * or were reset, they might still be running but with a different run_id.
                     */
                    public runningWorkflows: temporal.api.common.v1.IWorkflowExecution[];

                    /** Most recent ten actual action times (including manual triggers). */
                    public recentActions: temporal.api.schedule.v1.IScheduleActionResult[];

                    /** Next ten scheduled action times. */
                    public futureActionTimes: google.protobuf.ITimestamp[];

                    /** Timestamps of schedule creation and last update. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** ScheduleInfo updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** Deprecated. */
                    public invalidScheduleError: string;

                    /**
                     * Creates a new ScheduleInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ScheduleInfo instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.IScheduleInfo): temporal.api.schedule.v1.ScheduleInfo;

                    /**
                     * Encodes the specified ScheduleInfo message. Does not implicitly {@link temporal.api.schedule.v1.ScheduleInfo.verify|verify} messages.
                     * @param message ScheduleInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.IScheduleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ScheduleInfo message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.ScheduleInfo.verify|verify} messages.
                     * @param message ScheduleInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.IScheduleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ScheduleInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ScheduleInfo
                     * @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): temporal.api.schedule.v1.ScheduleInfo;

                    /**
                     * Decodes a ScheduleInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ScheduleInfo
                     * @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)): temporal.api.schedule.v1.ScheduleInfo;

                    /**
                     * Creates a ScheduleInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ScheduleInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.ScheduleInfo;

                    /**
                     * Creates a plain object from a ScheduleInfo message. Also converts values to other types if specified.
                     * @param message ScheduleInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.ScheduleInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ScheduleInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ScheduleInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Schedule. */
                interface ISchedule {

                    /** Schedule spec */
                    spec?: (temporal.api.schedule.v1.IScheduleSpec|null);

                    /** Schedule action */
                    action?: (temporal.api.schedule.v1.IScheduleAction|null);

                    /** Schedule policies */
                    policies?: (temporal.api.schedule.v1.ISchedulePolicies|null);

                    /** Schedule state */
                    state?: (temporal.api.schedule.v1.IScheduleState|null);
                }

                /** Represents a Schedule. */
                class Schedule implements ISchedule {

                    /**
                     * Constructs a new Schedule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.ISchedule);

                    /** Schedule spec. */
                    public spec?: (temporal.api.schedule.v1.IScheduleSpec|null);

                    /** Schedule action. */
                    public action?: (temporal.api.schedule.v1.IScheduleAction|null);

                    /** Schedule policies. */
                    public policies?: (temporal.api.schedule.v1.ISchedulePolicies|null);

                    /** Schedule state. */
                    public state?: (temporal.api.schedule.v1.IScheduleState|null);

                    /**
                     * Creates a new Schedule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Schedule instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.ISchedule): temporal.api.schedule.v1.Schedule;

                    /**
                     * Encodes the specified Schedule message. Does not implicitly {@link temporal.api.schedule.v1.Schedule.verify|verify} messages.
                     * @param message Schedule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.ISchedule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Schedule message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.Schedule.verify|verify} messages.
                     * @param message Schedule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.ISchedule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Schedule message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Schedule
                     * @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): temporal.api.schedule.v1.Schedule;

                    /**
                     * Decodes a Schedule message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Schedule
                     * @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)): temporal.api.schedule.v1.Schedule;

                    /**
                     * Creates a Schedule message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Schedule
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.Schedule;

                    /**
                     * Creates a plain object from a Schedule message. Also converts values to other types if specified.
                     * @param message Schedule
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.Schedule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Schedule to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Schedule
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ScheduleListInfo. */
                interface IScheduleListInfo {

                    /**
                     * From spec:
                     * Some fields are dropped from this copy of spec: timezone_data
                     */
                    spec?: (temporal.api.schedule.v1.IScheduleSpec|null);

                    /**
                     * From action:
                     * Action is a oneof field, but we need to encode this in JSON and oneof fields don't work
                     * well with JSON. If action is start_workflow, this is set:
                     */
                    workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** From state: */
                    notes?: (string|null);

                    /** ScheduleListInfo paused */
                    paused?: (boolean|null);

                    /** From info (maybe fewer entries): */
                    recentActions?: (temporal.api.schedule.v1.IScheduleActionResult[]|null);

                    /** ScheduleListInfo futureActionTimes */
                    futureActionTimes?: (google.protobuf.ITimestamp[]|null);
                }

                /**
                 * ScheduleListInfo is an abbreviated set of values from Schedule and ScheduleInfo
                 * that's returned in ListSchedules.
                 */
                class ScheduleListInfo implements IScheduleListInfo {

                    /**
                     * Constructs a new ScheduleListInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.IScheduleListInfo);

                    /**
                     * From spec:
                     * Some fields are dropped from this copy of spec: timezone_data
                     */
                    public spec?: (temporal.api.schedule.v1.IScheduleSpec|null);

                    /**
                     * From action:
                     * Action is a oneof field, but we need to encode this in JSON and oneof fields don't work
                     * well with JSON. If action is start_workflow, this is set:
                     */
                    public workflowType?: (temporal.api.common.v1.IWorkflowType|null);

                    /** From state: */
                    public notes: string;

                    /** ScheduleListInfo paused. */
                    public paused: boolean;

                    /** From info (maybe fewer entries): */
                    public recentActions: temporal.api.schedule.v1.IScheduleActionResult[];

                    /** ScheduleListInfo futureActionTimes. */
                    public futureActionTimes: google.protobuf.ITimestamp[];

                    /**
                     * Creates a new ScheduleListInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ScheduleListInfo instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.IScheduleListInfo): temporal.api.schedule.v1.ScheduleListInfo;

                    /**
                     * Encodes the specified ScheduleListInfo message. Does not implicitly {@link temporal.api.schedule.v1.ScheduleListInfo.verify|verify} messages.
                     * @param message ScheduleListInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.IScheduleListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ScheduleListInfo message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.ScheduleListInfo.verify|verify} messages.
                     * @param message ScheduleListInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.IScheduleListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ScheduleListInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ScheduleListInfo
                     * @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): temporal.api.schedule.v1.ScheduleListInfo;

                    /**
                     * Decodes a ScheduleListInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ScheduleListInfo
                     * @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)): temporal.api.schedule.v1.ScheduleListInfo;

                    /**
                     * Creates a ScheduleListInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ScheduleListInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.ScheduleListInfo;

                    /**
                     * Creates a plain object from a ScheduleListInfo message. Also converts values to other types if specified.
                     * @param message ScheduleListInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.ScheduleListInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ScheduleListInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ScheduleListInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ScheduleListEntry. */
                interface IScheduleListEntry {

                    /** ScheduleListEntry scheduleId */
                    scheduleId?: (string|null);

                    /** ScheduleListEntry memo */
                    memo?: (temporal.api.common.v1.IMemo|null);

                    /** ScheduleListEntry searchAttributes */
                    searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** ScheduleListEntry info */
                    info?: (temporal.api.schedule.v1.IScheduleListInfo|null);
                }

                /** ScheduleListEntry is returned by ListSchedules. */
                class ScheduleListEntry implements IScheduleListEntry {

                    /**
                     * Constructs a new ScheduleListEntry.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.schedule.v1.IScheduleListEntry);

                    /** ScheduleListEntry scheduleId. */
                    public scheduleId: string;

                    /** ScheduleListEntry memo. */
                    public memo?: (temporal.api.common.v1.IMemo|null);

                    /** ScheduleListEntry searchAttributes. */
                    public searchAttributes?: (temporal.api.common.v1.ISearchAttributes|null);

                    /** ScheduleListEntry info. */
                    public info?: (temporal.api.schedule.v1.IScheduleListInfo|null);

                    /**
                     * Creates a new ScheduleListEntry instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ScheduleListEntry instance
                     */
                    public static create(properties?: temporal.api.schedule.v1.IScheduleListEntry): temporal.api.schedule.v1.ScheduleListEntry;

                    /**
                     * Encodes the specified ScheduleListEntry message. Does not implicitly {@link temporal.api.schedule.v1.ScheduleListEntry.verify|verify} messages.
                     * @param message ScheduleListEntry message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.schedule.v1.IScheduleListEntry, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ScheduleListEntry message, length delimited. Does not implicitly {@link temporal.api.schedule.v1.ScheduleListEntry.verify|verify} messages.
                     * @param message ScheduleListEntry message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.schedule.v1.IScheduleListEntry, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ScheduleListEntry message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ScheduleListEntry
                     * @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): temporal.api.schedule.v1.ScheduleListEntry;

                    /**
                     * Decodes a ScheduleListEntry message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ScheduleListEntry
                     * @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)): temporal.api.schedule.v1.ScheduleListEntry;

                    /**
                     * Creates a ScheduleListEntry message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ScheduleListEntry
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.schedule.v1.ScheduleListEntry;

                    /**
                     * Creates a plain object from a ScheduleListEntry message. Also converts values to other types if specified.
                     * @param message ScheduleListEntry
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.schedule.v1.ScheduleListEntry, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ScheduleListEntry to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ScheduleListEntry
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace version. */
        namespace version {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a ReleaseInfo. */
                interface IReleaseInfo {

                    /** ReleaseInfo version */
                    version?: (string|null);

                    /** ReleaseInfo releaseTime */
                    releaseTime?: (google.protobuf.ITimestamp|null);

                    /** ReleaseInfo notes */
                    notes?: (string|null);
                }

                /** ReleaseInfo contains information about specific version of temporal. */
                class ReleaseInfo implements IReleaseInfo {

                    /**
                     * Constructs a new ReleaseInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.version.v1.IReleaseInfo);

                    /** ReleaseInfo version. */
                    public version: string;

                    /** ReleaseInfo releaseTime. */
                    public releaseTime?: (google.protobuf.ITimestamp|null);

                    /** ReleaseInfo notes. */
                    public notes: string;

                    /**
                     * Creates a new ReleaseInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ReleaseInfo instance
                     */
                    public static create(properties?: temporal.api.version.v1.IReleaseInfo): temporal.api.version.v1.ReleaseInfo;

                    /**
                     * Encodes the specified ReleaseInfo message. Does not implicitly {@link temporal.api.version.v1.ReleaseInfo.verify|verify} messages.
                     * @param message ReleaseInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.version.v1.IReleaseInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ReleaseInfo message, length delimited. Does not implicitly {@link temporal.api.version.v1.ReleaseInfo.verify|verify} messages.
                     * @param message ReleaseInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.version.v1.IReleaseInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ReleaseInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ReleaseInfo
                     * @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): temporal.api.version.v1.ReleaseInfo;

                    /**
                     * Decodes a ReleaseInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ReleaseInfo
                     * @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)): temporal.api.version.v1.ReleaseInfo;

                    /**
                     * Creates a ReleaseInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ReleaseInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.version.v1.ReleaseInfo;

                    /**
                     * Creates a plain object from a ReleaseInfo message. Also converts values to other types if specified.
                     * @param message ReleaseInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.version.v1.ReleaseInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ReleaseInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ReleaseInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an Alert. */
                interface IAlert {

                    /** Alert message */
                    message?: (string|null);

                    /** Alert severity */
                    severity?: (temporal.api.enums.v1.Severity|null);
                }

                /** Alert contains notification and severity. */
                class Alert implements IAlert {

                    /**
                     * Constructs a new Alert.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.version.v1.IAlert);

                    /** Alert message. */
                    public message: string;

                    /** Alert severity. */
                    public severity: temporal.api.enums.v1.Severity;

                    /**
                     * Creates a new Alert instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Alert instance
                     */
                    public static create(properties?: temporal.api.version.v1.IAlert): temporal.api.version.v1.Alert;

                    /**
                     * Encodes the specified Alert message. Does not implicitly {@link temporal.api.version.v1.Alert.verify|verify} messages.
                     * @param message Alert message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.version.v1.IAlert, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Alert message, length delimited. Does not implicitly {@link temporal.api.version.v1.Alert.verify|verify} messages.
                     * @param message Alert message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.version.v1.IAlert, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an Alert message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Alert
                     * @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): temporal.api.version.v1.Alert;

                    /**
                     * Decodes an Alert message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Alert
                     * @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)): temporal.api.version.v1.Alert;

                    /**
                     * Creates an Alert message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Alert
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.version.v1.Alert;

                    /**
                     * Creates a plain object from an Alert message. Also converts values to other types if specified.
                     * @param message Alert
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.version.v1.Alert, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Alert to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Alert
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a VersionInfo. */
                interface IVersionInfo {

                    /** VersionInfo current */
                    current?: (temporal.api.version.v1.IReleaseInfo|null);

                    /** VersionInfo recommended */
                    recommended?: (temporal.api.version.v1.IReleaseInfo|null);

                    /** VersionInfo instructions */
                    instructions?: (string|null);

                    /** VersionInfo alerts */
                    alerts?: (temporal.api.version.v1.IAlert[]|null);

                    /** VersionInfo lastUpdateTime */
                    lastUpdateTime?: (google.protobuf.ITimestamp|null);
                }

                /** VersionInfo contains details about current and recommended release versions as well as alerts and upgrade instructions. */
                class VersionInfo implements IVersionInfo {

                    /**
                     * Constructs a new VersionInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.version.v1.IVersionInfo);

                    /** VersionInfo current. */
                    public current?: (temporal.api.version.v1.IReleaseInfo|null);

                    /** VersionInfo recommended. */
                    public recommended?: (temporal.api.version.v1.IReleaseInfo|null);

                    /** VersionInfo instructions. */
                    public instructions: string;

                    /** VersionInfo alerts. */
                    public alerts: temporal.api.version.v1.IAlert[];

                    /** VersionInfo lastUpdateTime. */
                    public lastUpdateTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new VersionInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns VersionInfo instance
                     */
                    public static create(properties?: temporal.api.version.v1.IVersionInfo): temporal.api.version.v1.VersionInfo;

                    /**
                     * Encodes the specified VersionInfo message. Does not implicitly {@link temporal.api.version.v1.VersionInfo.verify|verify} messages.
                     * @param message VersionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.version.v1.IVersionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified VersionInfo message, length delimited. Does not implicitly {@link temporal.api.version.v1.VersionInfo.verify|verify} messages.
                     * @param message VersionInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.version.v1.IVersionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a VersionInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns VersionInfo
                     * @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): temporal.api.version.v1.VersionInfo;

                    /**
                     * Decodes a VersionInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns VersionInfo
                     * @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)): temporal.api.version.v1.VersionInfo;

                    /**
                     * Creates a VersionInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns VersionInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.version.v1.VersionInfo;

                    /**
                     * Creates a plain object from a VersionInfo message. Also converts values to other types if specified.
                     * @param message VersionInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.version.v1.VersionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this VersionInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for VersionInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace batch. */
        namespace batch {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a BatchOperationInfo. */
                interface IBatchOperationInfo {

                    /** Batch job ID */
                    jobId?: (string|null);

                    /** Batch operation state */
                    state?: (temporal.api.enums.v1.BatchOperationState|null);

                    /** Batch operation start time */
                    startTime?: (google.protobuf.ITimestamp|null);

                    /** Batch operation close time */
                    closeTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a BatchOperationInfo. */
                class BatchOperationInfo implements IBatchOperationInfo {

                    /**
                     * Constructs a new BatchOperationInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.batch.v1.IBatchOperationInfo);

                    /** Batch job ID */
                    public jobId: string;

                    /** Batch operation state */
                    public state: temporal.api.enums.v1.BatchOperationState;

                    /** Batch operation start time */
                    public startTime?: (google.protobuf.ITimestamp|null);

                    /** Batch operation close time */
                    public closeTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new BatchOperationInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchOperationInfo instance
                     */
                    public static create(properties?: temporal.api.batch.v1.IBatchOperationInfo): temporal.api.batch.v1.BatchOperationInfo;

                    /**
                     * Encodes the specified BatchOperationInfo message. Does not implicitly {@link temporal.api.batch.v1.BatchOperationInfo.verify|verify} messages.
                     * @param message BatchOperationInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.batch.v1.IBatchOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchOperationInfo message, length delimited. Does not implicitly {@link temporal.api.batch.v1.BatchOperationInfo.verify|verify} messages.
                     * @param message BatchOperationInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.batch.v1.IBatchOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchOperationInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchOperationInfo
                     * @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): temporal.api.batch.v1.BatchOperationInfo;

                    /**
                     * Decodes a BatchOperationInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchOperationInfo
                     * @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)): temporal.api.batch.v1.BatchOperationInfo;

                    /**
                     * Creates a BatchOperationInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchOperationInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.batch.v1.BatchOperationInfo;

                    /**
                     * Creates a plain object from a BatchOperationInfo message. Also converts values to other types if specified.
                     * @param message BatchOperationInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.batch.v1.BatchOperationInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchOperationInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchOperationInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchOperationTermination. */
                interface IBatchOperationTermination {

                    /** Serialized value(s) to provide to the termination event */
                    details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);
                }

                /**
                 * BatchOperationTermination sends terminate requests to batch workflows.
                 * Keep the parameter in sync with temporal.api.workflowservice.v1.TerminateWorkflowExecutionRequest.
                 * Ignore first_execution_run_id because this is used for single workflow operation.
                 */
                class BatchOperationTermination implements IBatchOperationTermination {

                    /**
                     * Constructs a new BatchOperationTermination.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.batch.v1.IBatchOperationTermination);

                    /** Serialized value(s) to provide to the termination event */
                    public details?: (temporal.api.common.v1.IPayloads|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /**
                     * Creates a new BatchOperationTermination instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchOperationTermination instance
                     */
                    public static create(properties?: temporal.api.batch.v1.IBatchOperationTermination): temporal.api.batch.v1.BatchOperationTermination;

                    /**
                     * Encodes the specified BatchOperationTermination message. Does not implicitly {@link temporal.api.batch.v1.BatchOperationTermination.verify|verify} messages.
                     * @param message BatchOperationTermination message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.batch.v1.IBatchOperationTermination, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchOperationTermination message, length delimited. Does not implicitly {@link temporal.api.batch.v1.BatchOperationTermination.verify|verify} messages.
                     * @param message BatchOperationTermination message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.batch.v1.IBatchOperationTermination, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchOperationTermination message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchOperationTermination
                     * @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): temporal.api.batch.v1.BatchOperationTermination;

                    /**
                     * Decodes a BatchOperationTermination message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchOperationTermination
                     * @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)): temporal.api.batch.v1.BatchOperationTermination;

                    /**
                     * Creates a BatchOperationTermination message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchOperationTermination
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.batch.v1.BatchOperationTermination;

                    /**
                     * Creates a plain object from a BatchOperationTermination message. Also converts values to other types if specified.
                     * @param message BatchOperationTermination
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.batch.v1.BatchOperationTermination, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchOperationTermination to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchOperationTermination
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchOperationSignal. */
                interface IBatchOperationSignal {

                    /** The workflow author-defined name of the signal to send to the workflow */
                    signal?: (string|null);

                    /** Serialized value(s) to provide with the signal */
                    input?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Headers that are passed with the signal to the processing workflow.
                     * These can include things like auth or tracing tokens.
                     */
                    header?: (temporal.api.common.v1.IHeader|null);

                    /** The identity of the worker/client */
                    identity?: (string|null);
                }

                /**
                 * BatchOperationSignal sends signals to batch workflows.
                 * Keep the parameter in sync with temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest.
                 */
                class BatchOperationSignal implements IBatchOperationSignal {

                    /**
                     * Constructs a new BatchOperationSignal.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.batch.v1.IBatchOperationSignal);

                    /** The workflow author-defined name of the signal to send to the workflow */
                    public signal: string;

                    /** Serialized value(s) to provide with the signal */
                    public input?: (temporal.api.common.v1.IPayloads|null);

                    /**
                     * Headers that are passed with the signal to the processing workflow.
                     * These can include things like auth or tracing tokens.
                     */
                    public header?: (temporal.api.common.v1.IHeader|null);

                    /** The identity of the worker/client */
                    public identity: string;

                    /**
                     * Creates a new BatchOperationSignal instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchOperationSignal instance
                     */
                    public static create(properties?: temporal.api.batch.v1.IBatchOperationSignal): temporal.api.batch.v1.BatchOperationSignal;

                    /**
                     * Encodes the specified BatchOperationSignal message. Does not implicitly {@link temporal.api.batch.v1.BatchOperationSignal.verify|verify} messages.
                     * @param message BatchOperationSignal message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.batch.v1.IBatchOperationSignal, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchOperationSignal message, length delimited. Does not implicitly {@link temporal.api.batch.v1.BatchOperationSignal.verify|verify} messages.
                     * @param message BatchOperationSignal message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.batch.v1.IBatchOperationSignal, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchOperationSignal message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchOperationSignal
                     * @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): temporal.api.batch.v1.BatchOperationSignal;

                    /**
                     * Decodes a BatchOperationSignal message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchOperationSignal
                     * @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)): temporal.api.batch.v1.BatchOperationSignal;

                    /**
                     * Creates a BatchOperationSignal message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchOperationSignal
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.batch.v1.BatchOperationSignal;

                    /**
                     * Creates a plain object from a BatchOperationSignal message. Also converts values to other types if specified.
                     * @param message BatchOperationSignal
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.batch.v1.BatchOperationSignal, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchOperationSignal to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchOperationSignal
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchOperationCancellation. */
                interface IBatchOperationCancellation {

                    /** The identity of the worker/client */
                    identity?: (string|null);
                }

                /**
                 * BatchOperationCancellation sends cancel requests to batch workflows.
                 * Keep the parameter in sync with temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionRequest.
                 * Ignore first_execution_run_id because this is used for single workflow operation.
                 */
                class BatchOperationCancellation implements IBatchOperationCancellation {

                    /**
                     * Constructs a new BatchOperationCancellation.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.batch.v1.IBatchOperationCancellation);

                    /** The identity of the worker/client */
                    public identity: string;

                    /**
                     * Creates a new BatchOperationCancellation instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchOperationCancellation instance
                     */
                    public static create(properties?: temporal.api.batch.v1.IBatchOperationCancellation): temporal.api.batch.v1.BatchOperationCancellation;

                    /**
                     * Encodes the specified BatchOperationCancellation message. Does not implicitly {@link temporal.api.batch.v1.BatchOperationCancellation.verify|verify} messages.
                     * @param message BatchOperationCancellation message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.batch.v1.IBatchOperationCancellation, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchOperationCancellation message, length delimited. Does not implicitly {@link temporal.api.batch.v1.BatchOperationCancellation.verify|verify} messages.
                     * @param message BatchOperationCancellation message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.batch.v1.IBatchOperationCancellation, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchOperationCancellation message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchOperationCancellation
                     * @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): temporal.api.batch.v1.BatchOperationCancellation;

                    /**
                     * Decodes a BatchOperationCancellation message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchOperationCancellation
                     * @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)): temporal.api.batch.v1.BatchOperationCancellation;

                    /**
                     * Creates a BatchOperationCancellation message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchOperationCancellation
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.batch.v1.BatchOperationCancellation;

                    /**
                     * Creates a plain object from a BatchOperationCancellation message. Also converts values to other types if specified.
                     * @param message BatchOperationCancellation
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.batch.v1.BatchOperationCancellation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchOperationCancellation to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchOperationCancellation
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchOperationDeletion. */
                interface IBatchOperationDeletion {

                    /** The identity of the worker/client */
                    identity?: (string|null);
                }

                /**
                 * BatchOperationDeletion sends deletion requests to batch workflows.
                 * Keep the parameter in sync with temporal.api.workflowservice.v1.DeleteWorkflowExecutionRequest.
                 */
                class BatchOperationDeletion implements IBatchOperationDeletion {

                    /**
                     * Constructs a new BatchOperationDeletion.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.batch.v1.IBatchOperationDeletion);

                    /** The identity of the worker/client */
                    public identity: string;

                    /**
                     * Creates a new BatchOperationDeletion instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchOperationDeletion instance
                     */
                    public static create(properties?: temporal.api.batch.v1.IBatchOperationDeletion): temporal.api.batch.v1.BatchOperationDeletion;

                    /**
                     * Encodes the specified BatchOperationDeletion message. Does not implicitly {@link temporal.api.batch.v1.BatchOperationDeletion.verify|verify} messages.
                     * @param message BatchOperationDeletion message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.batch.v1.IBatchOperationDeletion, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchOperationDeletion message, length delimited. Does not implicitly {@link temporal.api.batch.v1.BatchOperationDeletion.verify|verify} messages.
                     * @param message BatchOperationDeletion message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.batch.v1.IBatchOperationDeletion, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchOperationDeletion message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchOperationDeletion
                     * @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): temporal.api.batch.v1.BatchOperationDeletion;

                    /**
                     * Decodes a BatchOperationDeletion message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchOperationDeletion
                     * @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)): temporal.api.batch.v1.BatchOperationDeletion;

                    /**
                     * Creates a BatchOperationDeletion message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchOperationDeletion
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.batch.v1.BatchOperationDeletion;

                    /**
                     * Creates a plain object from a BatchOperationDeletion message. Also converts values to other types if specified.
                     * @param message BatchOperationDeletion
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.batch.v1.BatchOperationDeletion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchOperationDeletion to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchOperationDeletion
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchOperationReset. */
                interface IBatchOperationReset {

                    /** The identity of the worker/client. */
                    identity?: (string|null);

                    /** Describes what to reset to and how. If set, `reset_type` and `reset_reapply_type` are ignored. */
                    options?: (temporal.api.common.v1.IResetOptions|null);

                    /** Deprecated. Use `options`. */
                    resetType?: (temporal.api.enums.v1.ResetType|null);

                    /** Deprecated. Use `options`. */
                    resetReapplyType?: (temporal.api.enums.v1.ResetReapplyType|null);

                    /**
                     * Operations to perform after the workflow has been reset. These operations will be applied
                     * to the *new* run of the workflow execution in the order they are provided.
                     * All operations are applied to the workflow before the first new workflow task is generated
                     */
                    postResetOperations?: (temporal.api.workflow.v1.IPostResetOperation[]|null);
                }

                /**
                 * BatchOperationReset sends reset requests to batch workflows.
                 * Keep the parameter in sync with temporal.api.workflowservice.v1.ResetWorkflowExecutionRequest.
                 */
                class BatchOperationReset implements IBatchOperationReset {

                    /**
                     * Constructs a new BatchOperationReset.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.batch.v1.IBatchOperationReset);

                    /** The identity of the worker/client. */
                    public identity: string;

                    /** Describes what to reset to and how. If set, `reset_type` and `reset_reapply_type` are ignored. */
                    public options?: (temporal.api.common.v1.IResetOptions|null);

                    /** Deprecated. Use `options`. */
                    public resetType: temporal.api.enums.v1.ResetType;

                    /** Deprecated. Use `options`. */
                    public resetReapplyType: temporal.api.enums.v1.ResetReapplyType;

                    /**
                     * Operations to perform after the workflow has been reset. These operations will be applied
                     * to the *new* run of the workflow execution in the order they are provided.
                     * All operations are applied to the workflow before the first new workflow task is generated
                     */
                    public postResetOperations: temporal.api.workflow.v1.IPostResetOperation[];

                    /**
                     * Creates a new BatchOperationReset instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchOperationReset instance
                     */
                    public static create(properties?: temporal.api.batch.v1.IBatchOperationReset): temporal.api.batch.v1.BatchOperationReset;

                    /**
                     * Encodes the specified BatchOperationReset message. Does not implicitly {@link temporal.api.batch.v1.BatchOperationReset.verify|verify} messages.
                     * @param message BatchOperationReset message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.batch.v1.IBatchOperationReset, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchOperationReset message, length delimited. Does not implicitly {@link temporal.api.batch.v1.BatchOperationReset.verify|verify} messages.
                     * @param message BatchOperationReset message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.batch.v1.IBatchOperationReset, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchOperationReset message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchOperationReset
                     * @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): temporal.api.batch.v1.BatchOperationReset;

                    /**
                     * Decodes a BatchOperationReset message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchOperationReset
                     * @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)): temporal.api.batch.v1.BatchOperationReset;

                    /**
                     * Creates a BatchOperationReset message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchOperationReset
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.batch.v1.BatchOperationReset;

                    /**
                     * Creates a plain object from a BatchOperationReset message. Also converts values to other types if specified.
                     * @param message BatchOperationReset
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.batch.v1.BatchOperationReset, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchOperationReset to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchOperationReset
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchOperationUpdateWorkflowExecutionOptions. */
                interface IBatchOperationUpdateWorkflowExecutionOptions {

                    /** The identity of the worker/client. */
                    identity?: (string|null);

                    /** Update Workflow options that were originally specified via StartWorkflowExecution. Partial updates are accepted and controlled by update_mask. */
                    workflowExecutionOptions?: (temporal.api.workflow.v1.IWorkflowExecutionOptions|null);

                    /**
                     * Controls which fields from `workflow_execution_options` will be applied.
                     * To unset a field, set it to null and use the update mask to indicate that it should be mutated.
                     */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /**
                 * BatchOperationUpdateWorkflowExecutionOptions sends UpdateWorkflowExecutionOptions requests to batch workflows.
                 * Keep the parameters in sync with temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsRequest.
                 */
                class BatchOperationUpdateWorkflowExecutionOptions implements IBatchOperationUpdateWorkflowExecutionOptions {

                    /**
                     * Constructs a new BatchOperationUpdateWorkflowExecutionOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.batch.v1.IBatchOperationUpdateWorkflowExecutionOptions);

                    /** The identity of the worker/client. */
                    public identity: string;

                    /** Update Workflow options that were originally specified via StartWorkflowExecution. Partial updates are accepted and controlled by update_mask. */
                    public workflowExecutionOptions?: (temporal.api.workflow.v1.IWorkflowExecutionOptions|null);

                    /**
                     * Controls which fields from `workflow_execution_options` will be applied.
                     * To unset a field, set it to null and use the update mask to indicate that it should be mutated.
                     */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new BatchOperationUpdateWorkflowExecutionOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchOperationUpdateWorkflowExecutionOptions instance
                     */
                    public static create(properties?: temporal.api.batch.v1.IBatchOperationUpdateWorkflowExecutionOptions): temporal.api.batch.v1.BatchOperationUpdateWorkflowExecutionOptions;

                    /**
                     * Encodes the specified BatchOperationUpdateWorkflowExecutionOptions message. Does not implicitly {@link temporal.api.batch.v1.BatchOperationUpdateWorkflowExecutionOptions.verify|verify} messages.
                     * @param message BatchOperationUpdateWorkflowExecutionOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.batch.v1.IBatchOperationUpdateWorkflowExecutionOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchOperationUpdateWorkflowExecutionOptions message, length delimited. Does not implicitly {@link temporal.api.batch.v1.BatchOperationUpdateWorkflowExecutionOptions.verify|verify} messages.
                     * @param message BatchOperationUpdateWorkflowExecutionOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.batch.v1.IBatchOperationUpdateWorkflowExecutionOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchOperationUpdateWorkflowExecutionOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchOperationUpdateWorkflowExecutionOptions
                     * @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): temporal.api.batch.v1.BatchOperationUpdateWorkflowExecutionOptions;

                    /**
                     * Decodes a BatchOperationUpdateWorkflowExecutionOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchOperationUpdateWorkflowExecutionOptions
                     * @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)): temporal.api.batch.v1.BatchOperationUpdateWorkflowExecutionOptions;

                    /**
                     * Creates a BatchOperationUpdateWorkflowExecutionOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchOperationUpdateWorkflowExecutionOptions
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.batch.v1.BatchOperationUpdateWorkflowExecutionOptions;

                    /**
                     * Creates a plain object from a BatchOperationUpdateWorkflowExecutionOptions message. Also converts values to other types if specified.
                     * @param message BatchOperationUpdateWorkflowExecutionOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.batch.v1.BatchOperationUpdateWorkflowExecutionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchOperationUpdateWorkflowExecutionOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchOperationUpdateWorkflowExecutionOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchOperationUnpauseActivities. */
                interface IBatchOperationUnpauseActivities {

                    /** The identity of the worker/client. */
                    identity?: (string|null);

                    /** BatchOperationUnpauseActivities type */
                    type?: (string|null);

                    /** BatchOperationUnpauseActivities matchAll */
                    matchAll?: (boolean|null);

                    /** Setting this flag will also reset the number of attempts. */
                    resetAttempts?: (boolean|null);

                    /** Setting this flag will also reset the heartbeat details. */
                    resetHeartbeat?: (boolean|null);

                    /**
                     * If set, the activity will start at a random time within the specified jitter
                     * duration, introducing variability to the start time.
                     */
                    jitter?: (google.protobuf.IDuration|null);
                }

                /** BatchOperationUnpauseActivities sends unpause requests to batch workflows. */
                class BatchOperationUnpauseActivities implements IBatchOperationUnpauseActivities {

                    /**
                     * Constructs a new BatchOperationUnpauseActivities.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.batch.v1.IBatchOperationUnpauseActivities);

                    /** The identity of the worker/client. */
                    public identity: string;

                    /** BatchOperationUnpauseActivities type. */
                    public type?: (string|null);

                    /** BatchOperationUnpauseActivities matchAll. */
                    public matchAll?: (boolean|null);

                    /** Setting this flag will also reset the number of attempts. */
                    public resetAttempts: boolean;

                    /** Setting this flag will also reset the heartbeat details. */
                    public resetHeartbeat: boolean;

                    /**
                     * If set, the activity will start at a random time within the specified jitter
                     * duration, introducing variability to the start time.
                     */
                    public jitter?: (google.protobuf.IDuration|null);

                    /** The activity to unpause. If match_all is set to true, all activities will be unpaused. */
                    public activity?: ("type"|"matchAll");

                    /**
                     * Creates a new BatchOperationUnpauseActivities instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchOperationUnpauseActivities instance
                     */
                    public static create(properties?: temporal.api.batch.v1.IBatchOperationUnpauseActivities): temporal.api.batch.v1.BatchOperationUnpauseActivities;

                    /**
                     * Encodes the specified BatchOperationUnpauseActivities message. Does not implicitly {@link temporal.api.batch.v1.BatchOperationUnpauseActivities.verify|verify} messages.
                     * @param message BatchOperationUnpauseActivities message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.batch.v1.IBatchOperationUnpauseActivities, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchOperationUnpauseActivities message, length delimited. Does not implicitly {@link temporal.api.batch.v1.BatchOperationUnpauseActivities.verify|verify} messages.
                     * @param message BatchOperationUnpauseActivities message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.batch.v1.IBatchOperationUnpauseActivities, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchOperationUnpauseActivities message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchOperationUnpauseActivities
                     * @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): temporal.api.batch.v1.BatchOperationUnpauseActivities;

                    /**
                     * Decodes a BatchOperationUnpauseActivities message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchOperationUnpauseActivities
                     * @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)): temporal.api.batch.v1.BatchOperationUnpauseActivities;

                    /**
                     * Creates a BatchOperationUnpauseActivities message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchOperationUnpauseActivities
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.batch.v1.BatchOperationUnpauseActivities;

                    /**
                     * Creates a plain object from a BatchOperationUnpauseActivities message. Also converts values to other types if specified.
                     * @param message BatchOperationUnpauseActivities
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.batch.v1.BatchOperationUnpauseActivities, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchOperationUnpauseActivities to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchOperationUnpauseActivities
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchOperationTriggerWorkflowRule. */
                interface IBatchOperationTriggerWorkflowRule {

                    /** The identity of the worker/client. */
                    identity?: (string|null);

                    /** ID of existing rule. */
                    id?: (string|null);

                    /** Rule specification to be applied to the workflow without creating a new rule. */
                    spec?: (temporal.api.rules.v1.IWorkflowRuleSpec|null);
                }

                /** BatchOperationTriggerWorkflowRule sends TriggerWorkflowRule requests to batch workflows. */
                class BatchOperationTriggerWorkflowRule implements IBatchOperationTriggerWorkflowRule {

                    /**
                     * Constructs a new BatchOperationTriggerWorkflowRule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.batch.v1.IBatchOperationTriggerWorkflowRule);

                    /** The identity of the worker/client. */
                    public identity: string;

                    /** ID of existing rule. */
                    public id?: (string|null);

                    /** Rule specification to be applied to the workflow without creating a new rule. */
                    public spec?: (temporal.api.rules.v1.IWorkflowRuleSpec|null);

                    /** BatchOperationTriggerWorkflowRule rule. */
                    public rule?: ("id"|"spec");

                    /**
                     * Creates a new BatchOperationTriggerWorkflowRule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchOperationTriggerWorkflowRule instance
                     */
                    public static create(properties?: temporal.api.batch.v1.IBatchOperationTriggerWorkflowRule): temporal.api.batch.v1.BatchOperationTriggerWorkflowRule;

                    /**
                     * Encodes the specified BatchOperationTriggerWorkflowRule message. Does not implicitly {@link temporal.api.batch.v1.BatchOperationTriggerWorkflowRule.verify|verify} messages.
                     * @param message BatchOperationTriggerWorkflowRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.batch.v1.IBatchOperationTriggerWorkflowRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchOperationTriggerWorkflowRule message, length delimited. Does not implicitly {@link temporal.api.batch.v1.BatchOperationTriggerWorkflowRule.verify|verify} messages.
                     * @param message BatchOperationTriggerWorkflowRule message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.batch.v1.IBatchOperationTriggerWorkflowRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchOperationTriggerWorkflowRule message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchOperationTriggerWorkflowRule
                     * @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): temporal.api.batch.v1.BatchOperationTriggerWorkflowRule;

                    /**
                     * Decodes a BatchOperationTriggerWorkflowRule message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchOperationTriggerWorkflowRule
                     * @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)): temporal.api.batch.v1.BatchOperationTriggerWorkflowRule;

                    /**
                     * Creates a BatchOperationTriggerWorkflowRule message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchOperationTriggerWorkflowRule
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.batch.v1.BatchOperationTriggerWorkflowRule;

                    /**
                     * Creates a plain object from a BatchOperationTriggerWorkflowRule message. Also converts values to other types if specified.
                     * @param message BatchOperationTriggerWorkflowRule
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.batch.v1.BatchOperationTriggerWorkflowRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchOperationTriggerWorkflowRule to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchOperationTriggerWorkflowRule
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchOperationResetActivities. */
                interface IBatchOperationResetActivities {

                    /** The identity of the worker/client. */
                    identity?: (string|null);

                    /** BatchOperationResetActivities type */
                    type?: (string|null);

                    /** BatchOperationResetActivities matchAll */
                    matchAll?: (boolean|null);

                    /** Setting this flag will also reset the number of attempts. */
                    resetAttempts?: (boolean|null);

                    /** Setting this flag will also reset the heartbeat details. */
                    resetHeartbeat?: (boolean|null);

                    /** If activity is paused, it will remain paused after reset */
                    keepPaused?: (boolean|null);

                    /**
                     * If set, the activity will start at a random time within the specified jitter
                     * duration, introducing variability to the start time.
                     */
                    jitter?: (google.protobuf.IDuration|null);

                    /**
                     * If set, the activity options will be restored to the defaults.
                     * Default options are then options activity was created with.
                     * They are part of the first ActivityTaskScheduled event.
                     */
                    restoreOriginalOptions?: (boolean|null);
                }

                /**
                 * BatchOperationResetActivities sends activity reset requests in a batch.
                 * NOTE: keep in sync with temporal.api.workflowservice.v1.ResetActivityRequest
                 */
                class BatchOperationResetActivities implements IBatchOperationResetActivities {

                    /**
                     * Constructs a new BatchOperationResetActivities.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.batch.v1.IBatchOperationResetActivities);

                    /** The identity of the worker/client. */
                    public identity: string;

                    /** BatchOperationResetActivities type. */
                    public type?: (string|null);

                    /** BatchOperationResetActivities matchAll. */
                    public matchAll?: (boolean|null);

                    /** Setting this flag will also reset the number of attempts. */
                    public resetAttempts: boolean;

                    /** Setting this flag will also reset the heartbeat details. */
                    public resetHeartbeat: boolean;

                    /** If activity is paused, it will remain paused after reset */
                    public keepPaused: boolean;

                    /**
                     * If set, the activity will start at a random time within the specified jitter
                     * duration, introducing variability to the start time.
                     */
                    public jitter?: (google.protobuf.IDuration|null);

                    /**
                     * If set, the activity options will be restored to the defaults.
                     * Default options are then options activity was created with.
                     * They are part of the first ActivityTaskScheduled event.
                     */
                    public restoreOriginalOptions: boolean;

                    /** The activities to reset. If match_all is set to true, all activities will be reset. */
                    public activity?: ("type"|"matchAll");

                    /**
                     * Creates a new BatchOperationResetActivities instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchOperationResetActivities instance
                     */
                    public static create(properties?: temporal.api.batch.v1.IBatchOperationResetActivities): temporal.api.batch.v1.BatchOperationResetActivities;

                    /**
                     * Encodes the specified BatchOperationResetActivities message. Does not implicitly {@link temporal.api.batch.v1.BatchOperationResetActivities.verify|verify} messages.
                     * @param message BatchOperationResetActivities message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.batch.v1.IBatchOperationResetActivities, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchOperationResetActivities message, length delimited. Does not implicitly {@link temporal.api.batch.v1.BatchOperationResetActivities.verify|verify} messages.
                     * @param message BatchOperationResetActivities message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.batch.v1.IBatchOperationResetActivities, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchOperationResetActivities message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchOperationResetActivities
                     * @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): temporal.api.batch.v1.BatchOperationResetActivities;

                    /**
                     * Decodes a BatchOperationResetActivities message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchOperationResetActivities
                     * @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)): temporal.api.batch.v1.BatchOperationResetActivities;

                    /**
                     * Creates a BatchOperationResetActivities message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchOperationResetActivities
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.batch.v1.BatchOperationResetActivities;

                    /**
                     * Creates a plain object from a BatchOperationResetActivities message. Also converts values to other types if specified.
                     * @param message BatchOperationResetActivities
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.batch.v1.BatchOperationResetActivities, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchOperationResetActivities to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchOperationResetActivities
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchOperationUpdateActivityOptions. */
                interface IBatchOperationUpdateActivityOptions {

                    /** The identity of the worker/client. */
                    identity?: (string|null);

                    /** BatchOperationUpdateActivityOptions type */
                    type?: (string|null);

                    /** BatchOperationUpdateActivityOptions matchAll */
                    matchAll?: (boolean|null);

                    /** Update Activity options. Partial updates are accepted and controlled by update_mask. */
                    activityOptions?: (temporal.api.activity.v1.IActivityOptions|null);

                    /** Controls which fields from `activity_options` will be applied */
                    updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * If set, the activity options will be restored to the default.
                     * Default options are then options activity was created with.
                     * They are part of the first ActivityTaskScheduled event.
                     * This flag cannot be combined with any other option; if you supply
                     * restore_original together with other options, the request will be rejected.
                     */
                    restoreOriginal?: (boolean|null);
                }

                /**
                 * BatchOperationUpdateActivityOptions sends an update-activity-options requests in a batch.
                 * NOTE: keep in sync with temporal.api.workflowservice.v1.UpdateActivityRequest
                 */
                class BatchOperationUpdateActivityOptions implements IBatchOperationUpdateActivityOptions {

                    /**
                     * Constructs a new BatchOperationUpdateActivityOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.batch.v1.IBatchOperationUpdateActivityOptions);

                    /** The identity of the worker/client. */
                    public identity: string;

                    /** BatchOperationUpdateActivityOptions type. */
                    public type?: (string|null);

                    /** BatchOperationUpdateActivityOptions matchAll. */
                    public matchAll?: (boolean|null);

                    /** Update Activity options. Partial updates are accepted and controlled by update_mask. */
                    public activityOptions?: (temporal.api.activity.v1.IActivityOptions|null);

                    /** Controls which fields from `activity_options` will be applied */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * If set, the activity options will be restored to the default.
                     * Default options are then options activity was created with.
                     * They are part of the first ActivityTaskScheduled event.
                     * This flag cannot be combined with any other option; if you supply
                     * restore_original together with other options, the request will be rejected.
                     */
                    public restoreOriginal: boolean;

                    /** The activity to update. If match_all is set to true, all activities will be updated. */
                    public activity?: ("type"|"matchAll");

                    /**
                     * Creates a new BatchOperationUpdateActivityOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchOperationUpdateActivityOptions instance
                     */
                    public static create(properties?: temporal.api.batch.v1.IBatchOperationUpdateActivityOptions): temporal.api.batch.v1.BatchOperationUpdateActivityOptions;

                    /**
                     * Encodes the specified BatchOperationUpdateActivityOptions message. Does not implicitly {@link temporal.api.batch.v1.BatchOperationUpdateActivityOptions.verify|verify} messages.
                     * @param message BatchOperationUpdateActivityOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.batch.v1.IBatchOperationUpdateActivityOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchOperationUpdateActivityOptions message, length delimited. Does not implicitly {@link temporal.api.batch.v1.BatchOperationUpdateActivityOptions.verify|verify} messages.
                     * @param message BatchOperationUpdateActivityOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.batch.v1.IBatchOperationUpdateActivityOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchOperationUpdateActivityOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchOperationUpdateActivityOptions
                     * @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): temporal.api.batch.v1.BatchOperationUpdateActivityOptions;

                    /**
                     * Decodes a BatchOperationUpdateActivityOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchOperationUpdateActivityOptions
                     * @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)): temporal.api.batch.v1.BatchOperationUpdateActivityOptions;

                    /**
                     * Creates a BatchOperationUpdateActivityOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchOperationUpdateActivityOptions
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.batch.v1.BatchOperationUpdateActivityOptions;

                    /**
                     * Creates a plain object from a BatchOperationUpdateActivityOptions message. Also converts values to other types if specified.
                     * @param message BatchOperationUpdateActivityOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.batch.v1.BatchOperationUpdateActivityOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchOperationUpdateActivityOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchOperationUpdateActivityOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace worker. */
        namespace worker {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a WorkerPollerInfo. */
                interface IWorkerPollerInfo {

                    /** Number of polling RPCs that are currently in flight. */
                    currentPollers?: (number|null);

                    /** WorkerPollerInfo lastSuccessfulPollTime */
                    lastSuccessfulPollTime?: (google.protobuf.ITimestamp|null);

                    /** Set true if the number of concurrent pollers is auto-scaled */
                    isAutoscaling?: (boolean|null);
                }

                /** Represents a WorkerPollerInfo. */
                class WorkerPollerInfo implements IWorkerPollerInfo {

                    /**
                     * Constructs a new WorkerPollerInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.worker.v1.IWorkerPollerInfo);

                    /** Number of polling RPCs that are currently in flight. */
                    public currentPollers: number;

                    /** WorkerPollerInfo lastSuccessfulPollTime. */
                    public lastSuccessfulPollTime?: (google.protobuf.ITimestamp|null);

                    /** Set true if the number of concurrent pollers is auto-scaled */
                    public isAutoscaling: boolean;

                    /**
                     * Creates a new WorkerPollerInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerPollerInfo instance
                     */
                    public static create(properties?: temporal.api.worker.v1.IWorkerPollerInfo): temporal.api.worker.v1.WorkerPollerInfo;

                    /**
                     * Encodes the specified WorkerPollerInfo message. Does not implicitly {@link temporal.api.worker.v1.WorkerPollerInfo.verify|verify} messages.
                     * @param message WorkerPollerInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.worker.v1.IWorkerPollerInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerPollerInfo message, length delimited. Does not implicitly {@link temporal.api.worker.v1.WorkerPollerInfo.verify|verify} messages.
                     * @param message WorkerPollerInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.worker.v1.IWorkerPollerInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerPollerInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerPollerInfo
                     * @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): temporal.api.worker.v1.WorkerPollerInfo;

                    /**
                     * Decodes a WorkerPollerInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerPollerInfo
                     * @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)): temporal.api.worker.v1.WorkerPollerInfo;

                    /**
                     * Creates a WorkerPollerInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerPollerInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.worker.v1.WorkerPollerInfo;

                    /**
                     * Creates a plain object from a WorkerPollerInfo message. Also converts values to other types if specified.
                     * @param message WorkerPollerInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.worker.v1.WorkerPollerInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerPollerInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerPollerInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkerSlotsInfo. */
                interface IWorkerSlotsInfo {

                    /**
                     * Number of slots available for the worker to specific tasks.
                     * May be -1 if the upper bound is not known.
                     */
                    currentAvailableSlots?: (number|null);

                    /** Number of slots used by the worker for specific tasks. */
                    currentUsedSlots?: (number|null);

                    /**
                     * Kind of the slot supplier, which is used to determine how the slots are allocated.
                     * Possible values: "Fixed | ResourceBased | Custom String"
                     */
                    slotSupplierKind?: (string|null);

                    /**
                     * Total number of tasks processed (completed both successfully and unsuccesfully, or any other way)
                     * by the worker since the worker started. This is a cumulative counter.
                     */
                    totalProcessedTasks?: (number|null);

                    /** Total number of failed tasks processed by the worker so far. */
                    totalFailedTasks?: (number|null);

                    /**
                     * Number of tasks processed in since the last heartbeat from the worker.
                     * This is a cumulative counter, and it is reset to 0 each time the worker sends a heartbeat.
                     * Contains both successful and failed tasks.
                     */
                    lastIntervalProcessedTasks?: (number|null);

                    /** Number of failed tasks processed since the last heartbeat from the worker. */
                    lastIntervalFailureTasks?: (number|null);
                }

                /** Represents a WorkerSlotsInfo. */
                class WorkerSlotsInfo implements IWorkerSlotsInfo {

                    /**
                     * Constructs a new WorkerSlotsInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.worker.v1.IWorkerSlotsInfo);

                    /**
                     * Number of slots available for the worker to specific tasks.
                     * May be -1 if the upper bound is not known.
                     */
                    public currentAvailableSlots: number;

                    /** Number of slots used by the worker for specific tasks. */
                    public currentUsedSlots: number;

                    /**
                     * Kind of the slot supplier, which is used to determine how the slots are allocated.
                     * Possible values: "Fixed | ResourceBased | Custom String"
                     */
                    public slotSupplierKind: string;

                    /**
                     * Total number of tasks processed (completed both successfully and unsuccesfully, or any other way)
                     * by the worker since the worker started. This is a cumulative counter.
                     */
                    public totalProcessedTasks: number;

                    /** Total number of failed tasks processed by the worker so far. */
                    public totalFailedTasks: number;

                    /**
                     * Number of tasks processed in since the last heartbeat from the worker.
                     * This is a cumulative counter, and it is reset to 0 each time the worker sends a heartbeat.
                     * Contains both successful and failed tasks.
                     */
                    public lastIntervalProcessedTasks: number;

                    /** Number of failed tasks processed since the last heartbeat from the worker. */
                    public lastIntervalFailureTasks: number;

                    /**
                     * Creates a new WorkerSlotsInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerSlotsInfo instance
                     */
                    public static create(properties?: temporal.api.worker.v1.IWorkerSlotsInfo): temporal.api.worker.v1.WorkerSlotsInfo;

                    /**
                     * Encodes the specified WorkerSlotsInfo message. Does not implicitly {@link temporal.api.worker.v1.WorkerSlotsInfo.verify|verify} messages.
                     * @param message WorkerSlotsInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.worker.v1.IWorkerSlotsInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerSlotsInfo message, length delimited. Does not implicitly {@link temporal.api.worker.v1.WorkerSlotsInfo.verify|verify} messages.
                     * @param message WorkerSlotsInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.worker.v1.IWorkerSlotsInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerSlotsInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerSlotsInfo
                     * @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): temporal.api.worker.v1.WorkerSlotsInfo;

                    /**
                     * Decodes a WorkerSlotsInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerSlotsInfo
                     * @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)): temporal.api.worker.v1.WorkerSlotsInfo;

                    /**
                     * Creates a WorkerSlotsInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerSlotsInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.worker.v1.WorkerSlotsInfo;

                    /**
                     * Creates a plain object from a WorkerSlotsInfo message. Also converts values to other types if specified.
                     * @param message WorkerSlotsInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.worker.v1.WorkerSlotsInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerSlotsInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerSlotsInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkerHostInfo. */
                interface IWorkerHostInfo {

                    /** Worker host identifier. */
                    hostName?: (string|null);

                    /**
                     * Worker grouping identifier. A key to group workers that share the same client+namespace+process.
                     * This will be used to build the worker command nexus task queue name:
                     * "temporal-sys/worker-commands/{worker_grouping_key}"
                     */
                    workerGroupingKey?: (string|null);

                    /**
                     * Worker process identifier. This id only needs to be unique
                     * within one host (so using e.g. a unix pid would be appropriate).
                     */
                    processId?: (string|null);

                    /**
                     * System used CPU as a float in the range [0.0, 1.0] where 1.0 is defined as all
                     * cores on the host pegged.
                     */
                    currentHostCpuUsage?: (number|null);

                    /**
                     * System used memory as a float in the range [0.0, 1.0] where 1.0 is defined as
                     * all available memory on the host is used.
                     */
                    currentHostMemUsage?: (number|null);
                }

                /** Holds everything needed to identify the worker host/process context */
                class WorkerHostInfo implements IWorkerHostInfo {

                    /**
                     * Constructs a new WorkerHostInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.worker.v1.IWorkerHostInfo);

                    /** Worker host identifier. */
                    public hostName: string;

                    /**
                     * Worker grouping identifier. A key to group workers that share the same client+namespace+process.
                     * This will be used to build the worker command nexus task queue name:
                     * "temporal-sys/worker-commands/{worker_grouping_key}"
                     */
                    public workerGroupingKey: string;

                    /**
                     * Worker process identifier. This id only needs to be unique
                     * within one host (so using e.g. a unix pid would be appropriate).
                     */
                    public processId: string;

                    /**
                     * System used CPU as a float in the range [0.0, 1.0] where 1.0 is defined as all
                     * cores on the host pegged.
                     */
                    public currentHostCpuUsage: number;

                    /**
                     * System used memory as a float in the range [0.0, 1.0] where 1.0 is defined as
                     * all available memory on the host is used.
                     */
                    public currentHostMemUsage: number;

                    /**
                     * Creates a new WorkerHostInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerHostInfo instance
                     */
                    public static create(properties?: temporal.api.worker.v1.IWorkerHostInfo): temporal.api.worker.v1.WorkerHostInfo;

                    /**
                     * Encodes the specified WorkerHostInfo message. Does not implicitly {@link temporal.api.worker.v1.WorkerHostInfo.verify|verify} messages.
                     * @param message WorkerHostInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.worker.v1.IWorkerHostInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerHostInfo message, length delimited. Does not implicitly {@link temporal.api.worker.v1.WorkerHostInfo.verify|verify} messages.
                     * @param message WorkerHostInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.worker.v1.IWorkerHostInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerHostInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerHostInfo
                     * @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): temporal.api.worker.v1.WorkerHostInfo;

                    /**
                     * Decodes a WorkerHostInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerHostInfo
                     * @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)): temporal.api.worker.v1.WorkerHostInfo;

                    /**
                     * Creates a WorkerHostInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerHostInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.worker.v1.WorkerHostInfo;

                    /**
                     * Creates a plain object from a WorkerHostInfo message. Also converts values to other types if specified.
                     * @param message WorkerHostInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.worker.v1.WorkerHostInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerHostInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerHostInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkerHeartbeat. */
                interface IWorkerHeartbeat {

                    /**
                     * Worker identifier, should be unique for the namespace.
                     * It is distinct from worker identity, which is not necessarily namespace-unique.
                     */
                    workerInstanceKey?: (string|null);

                    /**
                     * Worker identity, set by the client, may not be unique.
                     * Usually host_name+(user group name)+process_id, but can be overwritten by the user.
                     */
                    workerIdentity?: (string|null);

                    /** Worker host information. */
                    hostInfo?: (temporal.api.worker.v1.IWorkerHostInfo|null);

                    /** Task queue this worker is polling for tasks. */
                    taskQueue?: (string|null);

                    /** WorkerHeartbeat deploymentVersion */
                    deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** WorkerHeartbeat sdkName */
                    sdkName?: (string|null);

                    /** WorkerHeartbeat sdkVersion */
                    sdkVersion?: (string|null);

                    /** Worker status. Defined by SDK. */
                    status?: (temporal.api.enums.v1.WorkerStatus|null);

                    /**
                     * Worker start time.
                     * It can be used to determine worker uptime. (current time - start time)
                     */
                    startTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Timestamp of this heartbeat, coming from the worker. Worker should set it to "now".
                     * Note that this timestamp comes directly from the worker and is subject to workers' clock skew.
                     */
                    heartbeatTime?: (google.protobuf.ITimestamp|null);

                    /** Elapsed time since the last heartbeat from the worker. */
                    elapsedSinceLastHeartbeat?: (google.protobuf.IDuration|null);

                    /** WorkerHeartbeat workflowTaskSlotsInfo */
                    workflowTaskSlotsInfo?: (temporal.api.worker.v1.IWorkerSlotsInfo|null);

                    /** WorkerHeartbeat activityTaskSlotsInfo */
                    activityTaskSlotsInfo?: (temporal.api.worker.v1.IWorkerSlotsInfo|null);

                    /** WorkerHeartbeat nexusTaskSlotsInfo */
                    nexusTaskSlotsInfo?: (temporal.api.worker.v1.IWorkerSlotsInfo|null);

                    /** WorkerHeartbeat localActivitySlotsInfo */
                    localActivitySlotsInfo?: (temporal.api.worker.v1.IWorkerSlotsInfo|null);

                    /** WorkerHeartbeat workflowPollerInfo */
                    workflowPollerInfo?: (temporal.api.worker.v1.IWorkerPollerInfo|null);

                    /** WorkerHeartbeat workflowStickyPollerInfo */
                    workflowStickyPollerInfo?: (temporal.api.worker.v1.IWorkerPollerInfo|null);

                    /** WorkerHeartbeat activityPollerInfo */
                    activityPollerInfo?: (temporal.api.worker.v1.IWorkerPollerInfo|null);

                    /** WorkerHeartbeat nexusPollerInfo */
                    nexusPollerInfo?: (temporal.api.worker.v1.IWorkerPollerInfo|null);

                    /** A Workflow Task found a cached Workflow Execution to run against. */
                    totalStickyCacheHit?: (number|null);

                    /** A Workflow Task did not find a cached Workflow execution to run against. */
                    totalStickyCacheMiss?: (number|null);

                    /** Current cache size, expressed in number of Workflow Executions. */
                    currentStickyCacheSize?: (number|null);

                    /** Plugins currently in use by this SDK. */
                    plugins?: (temporal.api.worker.v1.IPluginInfo[]|null);
                }

                /**
                 * Worker info message, contains information about the worker and its current state.
                 * All information is provided by the worker itself.
                 * (-- api-linter: core::0140::prepositions=disabled
                 * aip.dev/not-precedent: Removing those words make names less clear. --)
                 */
                class WorkerHeartbeat implements IWorkerHeartbeat {

                    /**
                     * Constructs a new WorkerHeartbeat.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.worker.v1.IWorkerHeartbeat);

                    /**
                     * Worker identifier, should be unique for the namespace.
                     * It is distinct from worker identity, which is not necessarily namespace-unique.
                     */
                    public workerInstanceKey: string;

                    /**
                     * Worker identity, set by the client, may not be unique.
                     * Usually host_name+(user group name)+process_id, but can be overwritten by the user.
                     */
                    public workerIdentity: string;

                    /** Worker host information. */
                    public hostInfo?: (temporal.api.worker.v1.IWorkerHostInfo|null);

                    /** Task queue this worker is polling for tasks. */
                    public taskQueue: string;

                    /** WorkerHeartbeat deploymentVersion. */
                    public deploymentVersion?: (temporal.api.deployment.v1.IWorkerDeploymentVersion|null);

                    /** WorkerHeartbeat sdkName. */
                    public sdkName: string;

                    /** WorkerHeartbeat sdkVersion. */
                    public sdkVersion: string;

                    /** Worker status. Defined by SDK. */
                    public status: temporal.api.enums.v1.WorkerStatus;

                    /**
                     * Worker start time.
                     * It can be used to determine worker uptime. (current time - start time)
                     */
                    public startTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Timestamp of this heartbeat, coming from the worker. Worker should set it to "now".
                     * Note that this timestamp comes directly from the worker and is subject to workers' clock skew.
                     */
                    public heartbeatTime?: (google.protobuf.ITimestamp|null);

                    /** Elapsed time since the last heartbeat from the worker. */
                    public elapsedSinceLastHeartbeat?: (google.protobuf.IDuration|null);

                    /** WorkerHeartbeat workflowTaskSlotsInfo. */
                    public workflowTaskSlotsInfo?: (temporal.api.worker.v1.IWorkerSlotsInfo|null);

                    /** WorkerHeartbeat activityTaskSlotsInfo. */
                    public activityTaskSlotsInfo?: (temporal.api.worker.v1.IWorkerSlotsInfo|null);

                    /** WorkerHeartbeat nexusTaskSlotsInfo. */
                    public nexusTaskSlotsInfo?: (temporal.api.worker.v1.IWorkerSlotsInfo|null);

                    /** WorkerHeartbeat localActivitySlotsInfo. */
                    public localActivitySlotsInfo?: (temporal.api.worker.v1.IWorkerSlotsInfo|null);

                    /** WorkerHeartbeat workflowPollerInfo. */
                    public workflowPollerInfo?: (temporal.api.worker.v1.IWorkerPollerInfo|null);

                    /** WorkerHeartbeat workflowStickyPollerInfo. */
                    public workflowStickyPollerInfo?: (temporal.api.worker.v1.IWorkerPollerInfo|null);

                    /** WorkerHeartbeat activityPollerInfo. */
                    public activityPollerInfo?: (temporal.api.worker.v1.IWorkerPollerInfo|null);

                    /** WorkerHeartbeat nexusPollerInfo. */
                    public nexusPollerInfo?: (temporal.api.worker.v1.IWorkerPollerInfo|null);

                    /** A Workflow Task found a cached Workflow Execution to run against. */
                    public totalStickyCacheHit: number;

                    /** A Workflow Task did not find a cached Workflow execution to run against. */
                    public totalStickyCacheMiss: number;

                    /** Current cache size, expressed in number of Workflow Executions. */
                    public currentStickyCacheSize: number;

                    /** Plugins currently in use by this SDK. */
                    public plugins: temporal.api.worker.v1.IPluginInfo[];

                    /**
                     * Creates a new WorkerHeartbeat instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerHeartbeat instance
                     */
                    public static create(properties?: temporal.api.worker.v1.IWorkerHeartbeat): temporal.api.worker.v1.WorkerHeartbeat;

                    /**
                     * Encodes the specified WorkerHeartbeat message. Does not implicitly {@link temporal.api.worker.v1.WorkerHeartbeat.verify|verify} messages.
                     * @param message WorkerHeartbeat message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.worker.v1.IWorkerHeartbeat, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerHeartbeat message, length delimited. Does not implicitly {@link temporal.api.worker.v1.WorkerHeartbeat.verify|verify} messages.
                     * @param message WorkerHeartbeat message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.worker.v1.IWorkerHeartbeat, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerHeartbeat message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerHeartbeat
                     * @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): temporal.api.worker.v1.WorkerHeartbeat;

                    /**
                     * Decodes a WorkerHeartbeat message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerHeartbeat
                     * @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)): temporal.api.worker.v1.WorkerHeartbeat;

                    /**
                     * Creates a WorkerHeartbeat message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerHeartbeat
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.worker.v1.WorkerHeartbeat;

                    /**
                     * Creates a plain object from a WorkerHeartbeat message. Also converts values to other types if specified.
                     * @param message WorkerHeartbeat
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.worker.v1.WorkerHeartbeat, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerHeartbeat to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerHeartbeat
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkerInfo. */
                interface IWorkerInfo {

                    /** WorkerInfo workerHeartbeat */
                    workerHeartbeat?: (temporal.api.worker.v1.IWorkerHeartbeat|null);
                }

                /** Represents a WorkerInfo. */
                class WorkerInfo implements IWorkerInfo {

                    /**
                     * Constructs a new WorkerInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.worker.v1.IWorkerInfo);

                    /** WorkerInfo workerHeartbeat. */
                    public workerHeartbeat?: (temporal.api.worker.v1.IWorkerHeartbeat|null);

                    /**
                     * Creates a new WorkerInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkerInfo instance
                     */
                    public static create(properties?: temporal.api.worker.v1.IWorkerInfo): temporal.api.worker.v1.WorkerInfo;

                    /**
                     * Encodes the specified WorkerInfo message. Does not implicitly {@link temporal.api.worker.v1.WorkerInfo.verify|verify} messages.
                     * @param message WorkerInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.worker.v1.IWorkerInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkerInfo message, length delimited. Does not implicitly {@link temporal.api.worker.v1.WorkerInfo.verify|verify} messages.
                     * @param message WorkerInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.worker.v1.IWorkerInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkerInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkerInfo
                     * @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): temporal.api.worker.v1.WorkerInfo;

                    /**
                     * Decodes a WorkerInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkerInfo
                     * @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)): temporal.api.worker.v1.WorkerInfo;

                    /**
                     * Creates a WorkerInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkerInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.worker.v1.WorkerInfo;

                    /**
                     * Creates a plain object from a WorkerInfo message. Also converts values to other types if specified.
                     * @param message WorkerInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.worker.v1.WorkerInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkerInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkerInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PluginInfo. */
                interface IPluginInfo {

                    /** The name of the plugin, required. */
                    name?: (string|null);

                    /** The version of the plugin, may be empty. */
                    version?: (string|null);
                }

                /** Represents a PluginInfo. */
                class PluginInfo implements IPluginInfo {

                    /**
                     * Constructs a new PluginInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.worker.v1.IPluginInfo);

                    /** The name of the plugin, required. */
                    public name: string;

                    /** The version of the plugin, may be empty. */
                    public version: string;

                    /**
                     * Creates a new PluginInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PluginInfo instance
                     */
                    public static create(properties?: temporal.api.worker.v1.IPluginInfo): temporal.api.worker.v1.PluginInfo;

                    /**
                     * Encodes the specified PluginInfo message. Does not implicitly {@link temporal.api.worker.v1.PluginInfo.verify|verify} messages.
                     * @param message PluginInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.worker.v1.IPluginInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PluginInfo message, length delimited. Does not implicitly {@link temporal.api.worker.v1.PluginInfo.verify|verify} messages.
                     * @param message PluginInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.worker.v1.IPluginInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PluginInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PluginInfo
                     * @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): temporal.api.worker.v1.PluginInfo;

                    /**
                     * Decodes a PluginInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PluginInfo
                     * @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)): temporal.api.worker.v1.PluginInfo;

                    /**
                     * Creates a PluginInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PluginInfo
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.worker.v1.PluginInfo;

                    /**
                     * Creates a plain object from a PluginInfo message. Also converts values to other types if specified.
                     * @param message PluginInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.worker.v1.PluginInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PluginInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PluginInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace operatorservice. */
        namespace operatorservice {

            /** Namespace v1. */
            namespace v1 {

                /**
                 * OperatorService API defines how Temporal SDKs and other clients interact with the Temporal server
                 * to perform administrative functions like registering a search attribute or a namespace.
                 * APIs in this file could be not compatible with Temporal Cloud, hence it's usage in SDKs should be limited by
                 * designated APIs that clearly state that they shouldn't be used by the main Application (Workflows & Activities) framework.
                 */
                class OperatorService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new OperatorService 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 OperatorService 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): OperatorService;

                    /**
                     * AddSearchAttributes add custom search attributes.
                     *
                     * Returns ALREADY_EXISTS status code if a Search Attribute with any of the specified names already exists
                     * Returns INTERNAL status code with temporal.api.errordetails.v1.SystemWorkflowFailure in Error Details if registration process fails,
                     * @param request AddSearchAttributesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AddSearchAttributesResponse
                     */
                    public addSearchAttributes(request: temporal.api.operatorservice.v1.IAddSearchAttributesRequest, callback: temporal.api.operatorservice.v1.OperatorService.AddSearchAttributesCallback): void;

                    /**
                     * AddSearchAttributes add custom search attributes.
                     *
                     * Returns ALREADY_EXISTS status code if a Search Attribute with any of the specified names already exists
                     * Returns INTERNAL status code with temporal.api.errordetails.v1.SystemWorkflowFailure in Error Details if registration process fails,
                     * @param request AddSearchAttributesRequest message or plain object
                     * @returns Promise
                     */
                    public addSearchAttributes(request: temporal.api.operatorservice.v1.IAddSearchAttributesRequest): Promise<temporal.api.operatorservice.v1.AddSearchAttributesResponse>;

                    /**
                     * RemoveSearchAttributes removes custom search attributes.
                     *
                     * Returns NOT_FOUND status code if a Search Attribute with any of the specified names is not registered
                     * @param request RemoveSearchAttributesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RemoveSearchAttributesResponse
                     */
                    public removeSearchAttributes(request: temporal.api.operatorservice.v1.IRemoveSearchAttributesRequest, callback: temporal.api.operatorservice.v1.OperatorService.RemoveSearchAttributesCallback): void;

                    /**
                     * RemoveSearchAttributes removes custom search attributes.
                     *
                     * Returns NOT_FOUND status code if a Search Attribute with any of the specified names is not registered
                     * @param request RemoveSearchAttributesRequest message or plain object
                     * @returns Promise
                     */
                    public removeSearchAttributes(request: temporal.api.operatorservice.v1.IRemoveSearchAttributesRequest): Promise<temporal.api.operatorservice.v1.RemoveSearchAttributesResponse>;

                    /**
                     * ListSearchAttributes returns comprehensive information about search attributes.
                     * @param request ListSearchAttributesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListSearchAttributesResponse
                     */
                    public listSearchAttributes(request: temporal.api.operatorservice.v1.IListSearchAttributesRequest, callback: temporal.api.operatorservice.v1.OperatorService.ListSearchAttributesCallback): void;

                    /**
                     * ListSearchAttributes returns comprehensive information about search attributes.
                     * @param request ListSearchAttributesRequest message or plain object
                     * @returns Promise
                     */
                    public listSearchAttributes(request: temporal.api.operatorservice.v1.IListSearchAttributesRequest): Promise<temporal.api.operatorservice.v1.ListSearchAttributesResponse>;

                    /**
                     * DeleteNamespace synchronously deletes a namespace and asynchronously reclaims all namespace resources.
                     * @param request DeleteNamespaceRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DeleteNamespaceResponse
                     */
                    public deleteNamespace(request: temporal.api.operatorservice.v1.IDeleteNamespaceRequest, callback: temporal.api.operatorservice.v1.OperatorService.DeleteNamespaceCallback): void;

                    /**
                     * DeleteNamespace synchronously deletes a namespace and asynchronously reclaims all namespace resources.
                     * @param request DeleteNamespaceRequest message or plain object
                     * @returns Promise
                     */
                    public deleteNamespace(request: temporal.api.operatorservice.v1.IDeleteNamespaceRequest): Promise<temporal.api.operatorservice.v1.DeleteNamespaceResponse>;

                    /**
                     * AddOrUpdateRemoteCluster adds or updates remote cluster.
                     * @param request AddOrUpdateRemoteClusterRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AddOrUpdateRemoteClusterResponse
                     */
                    public addOrUpdateRemoteCluster(request: temporal.api.operatorservice.v1.IAddOrUpdateRemoteClusterRequest, callback: temporal.api.operatorservice.v1.OperatorService.AddOrUpdateRemoteClusterCallback): void;

                    /**
                     * AddOrUpdateRemoteCluster adds or updates remote cluster.
                     * @param request AddOrUpdateRemoteClusterRequest message or plain object
                     * @returns Promise
                     */
                    public addOrUpdateRemoteCluster(request: temporal.api.operatorservice.v1.IAddOrUpdateRemoteClusterRequest): Promise<temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterResponse>;

                    /**
                     * RemoveRemoteCluster removes remote cluster.
                     * @param request RemoveRemoteClusterRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and RemoveRemoteClusterResponse
                     */
                    public removeRemoteCluster(request: temporal.api.operatorservice.v1.IRemoveRemoteClusterRequest, callback: temporal.api.operatorservice.v1.OperatorService.RemoveRemoteClusterCallback): void;

                    /**
                     * RemoveRemoteCluster removes remote cluster.
                     * @param request RemoveRemoteClusterRequest message or plain object
                     * @returns Promise
                     */
                    public removeRemoteCluster(request: temporal.api.operatorservice.v1.IRemoveRemoteClusterRequest): Promise<temporal.api.operatorservice.v1.RemoveRemoteClusterResponse>;

                    /**
                     * ListClusters returns information about Temporal clusters.
                     * @param request ListClustersRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListClustersResponse
                     */
                    public listClusters(request: temporal.api.operatorservice.v1.IListClustersRequest, callback: temporal.api.operatorservice.v1.OperatorService.ListClustersCallback): void;

                    /**
                     * ListClusters returns information about Temporal clusters.
                     * @param request ListClustersRequest message or plain object
                     * @returns Promise
                     */
                    public listClusters(request: temporal.api.operatorservice.v1.IListClustersRequest): Promise<temporal.api.operatorservice.v1.ListClustersResponse>;

                    /**
                     * Get a registered Nexus endpoint by ID. The returned version can be used for optimistic updates.
                     * @param request GetNexusEndpointRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetNexusEndpointResponse
                     */
                    public getNexusEndpoint(request: temporal.api.operatorservice.v1.IGetNexusEndpointRequest, callback: temporal.api.operatorservice.v1.OperatorService.GetNexusEndpointCallback): void;

                    /**
                     * Get a registered Nexus endpoint by ID. The returned version can be used for optimistic updates.
                     * @param request GetNexusEndpointRequest message or plain object
                     * @returns Promise
                     */
                    public getNexusEndpoint(request: temporal.api.operatorservice.v1.IGetNexusEndpointRequest): Promise<temporal.api.operatorservice.v1.GetNexusEndpointResponse>;

                    /**
                     * Create a Nexus endpoint. This will fail if an endpoint with the same name is already registered with a status of
                     * ALREADY_EXISTS.
                     * Returns the created endpoint with its initial version. You may use this version for subsequent updates.
                     * @param request CreateNexusEndpointRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CreateNexusEndpointResponse
                     */
                    public createNexusEndpoint(request: temporal.api.operatorservice.v1.ICreateNexusEndpointRequest, callback: temporal.api.operatorservice.v1.OperatorService.CreateNexusEndpointCallback): void;

                    /**
                     * Create a Nexus endpoint. This will fail if an endpoint with the same name is already registered with a status of
                     * ALREADY_EXISTS.
                     * Returns the created endpoint with its initial version. You may use this version for subsequent updates.
                     * @param request CreateNexusEndpointRequest message or plain object
                     * @returns Promise
                     */
                    public createNexusEndpoint(request: temporal.api.operatorservice.v1.ICreateNexusEndpointRequest): Promise<temporal.api.operatorservice.v1.CreateNexusEndpointResponse>;

                    /**
                     * Optimistically update a Nexus endpoint based on provided version as obtained via the `GetNexusEndpoint` or
                     * `ListNexusEndpointResponse` APIs. This will fail with a status of FAILED_PRECONDITION if the version does not
                     * match.
                     * Returns the updated endpoint with its updated version. You may use this version for subsequent updates. You don't
                     * need to increment the version yourself. The server will increment the version for you after each update.
                     * @param request UpdateNexusEndpointRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UpdateNexusEndpointResponse
                     */
                    public updateNexusEndpoint(request: temporal.api.operatorservice.v1.IUpdateNexusEndpointRequest, callback: temporal.api.operatorservice.v1.OperatorService.UpdateNexusEndpointCallback): void;

                    /**
                     * Optimistically update a Nexus endpoint based on provided version as obtained via the `GetNexusEndpoint` or
                     * `ListNexusEndpointResponse` APIs. This will fail with a status of FAILED_PRECONDITION if the version does not
                     * match.
                     * Returns the updated endpoint with its updated version. You may use this version for subsequent updates. You don't
                     * need to increment the version yourself. The server will increment the version for you after each update.
                     * @param request UpdateNexusEndpointRequest message or plain object
                     * @returns Promise
                     */
                    public updateNexusEndpoint(request: temporal.api.operatorservice.v1.IUpdateNexusEndpointRequest): Promise<temporal.api.operatorservice.v1.UpdateNexusEndpointResponse>;

                    /**
                     * Delete an incoming Nexus service by ID.
                     * @param request DeleteNexusEndpointRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and DeleteNexusEndpointResponse
                     */
                    public deleteNexusEndpoint(request: temporal.api.operatorservice.v1.IDeleteNexusEndpointRequest, callback: temporal.api.operatorservice.v1.OperatorService.DeleteNexusEndpointCallback): void;

                    /**
                     * Delete an incoming Nexus service by ID.
                     * @param request DeleteNexusEndpointRequest message or plain object
                     * @returns Promise
                     */
                    public deleteNexusEndpoint(request: temporal.api.operatorservice.v1.IDeleteNexusEndpointRequest): Promise<temporal.api.operatorservice.v1.DeleteNexusEndpointResponse>;

                    /**
                     * List all Nexus endpoints for the cluster, sorted by ID in ascending order. Set page_token in the request to the
                     * next_page_token field of the previous response to get the next page of results. An empty next_page_token
                     * indicates that there are no more results. During pagination, a newly added service with an ID lexicographically
                     * earlier than the previous page's last endpoint's ID may be missed.
                     * @param request ListNexusEndpointsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListNexusEndpointsResponse
                     */
                    public listNexusEndpoints(request: temporal.api.operatorservice.v1.IListNexusEndpointsRequest, callback: temporal.api.operatorservice.v1.OperatorService.ListNexusEndpointsCallback): void;

                    /**
                     * List all Nexus endpoints for the cluster, sorted by ID in ascending order. Set page_token in the request to the
                     * next_page_token field of the previous response to get the next page of results. An empty next_page_token
                     * indicates that there are no more results. During pagination, a newly added service with an ID lexicographically
                     * earlier than the previous page's last endpoint's ID may be missed.
                     * @param request ListNexusEndpointsRequest message or plain object
                     * @returns Promise
                     */
                    public listNexusEndpoints(request: temporal.api.operatorservice.v1.IListNexusEndpointsRequest): Promise<temporal.api.operatorservice.v1.ListNexusEndpointsResponse>;
                }

                namespace OperatorService {

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#addSearchAttributes}.
                     * @param error Error, if any
                     * @param [response] AddSearchAttributesResponse
                     */
                    type AddSearchAttributesCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.AddSearchAttributesResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#removeSearchAttributes}.
                     * @param error Error, if any
                     * @param [response] RemoveSearchAttributesResponse
                     */
                    type RemoveSearchAttributesCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.RemoveSearchAttributesResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#listSearchAttributes}.
                     * @param error Error, if any
                     * @param [response] ListSearchAttributesResponse
                     */
                    type ListSearchAttributesCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.ListSearchAttributesResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#deleteNamespace}.
                     * @param error Error, if any
                     * @param [response] DeleteNamespaceResponse
                     */
                    type DeleteNamespaceCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.DeleteNamespaceResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#addOrUpdateRemoteCluster}.
                     * @param error Error, if any
                     * @param [response] AddOrUpdateRemoteClusterResponse
                     */
                    type AddOrUpdateRemoteClusterCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#removeRemoteCluster}.
                     * @param error Error, if any
                     * @param [response] RemoveRemoteClusterResponse
                     */
                    type RemoveRemoteClusterCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.RemoveRemoteClusterResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#listClusters}.
                     * @param error Error, if any
                     * @param [response] ListClustersResponse
                     */
                    type ListClustersCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.ListClustersResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#getNexusEndpoint}.
                     * @param error Error, if any
                     * @param [response] GetNexusEndpointResponse
                     */
                    type GetNexusEndpointCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.GetNexusEndpointResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#createNexusEndpoint}.
                     * @param error Error, if any
                     * @param [response] CreateNexusEndpointResponse
                     */
                    type CreateNexusEndpointCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.CreateNexusEndpointResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#updateNexusEndpoint}.
                     * @param error Error, if any
                     * @param [response] UpdateNexusEndpointResponse
                     */
                    type UpdateNexusEndpointCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.UpdateNexusEndpointResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#deleteNexusEndpoint}.
                     * @param error Error, if any
                     * @param [response] DeleteNexusEndpointResponse
                     */
                    type DeleteNexusEndpointCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.DeleteNexusEndpointResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.operatorservice.v1.OperatorService#listNexusEndpoints}.
                     * @param error Error, if any
                     * @param [response] ListNexusEndpointsResponse
                     */
                    type ListNexusEndpointsCallback = (error: (Error|null), response?: temporal.api.operatorservice.v1.ListNexusEndpointsResponse) => void;
                }

                /** Properties of an AddSearchAttributesRequest. */
                interface IAddSearchAttributesRequest {

                    /** Mapping between search attribute name and its IndexedValueType. */
                    searchAttributes?: ({ [k: string]: temporal.api.enums.v1.IndexedValueType }|null);

                    /** AddSearchAttributesRequest namespace */
                    namespace?: (string|null);
                }

                /** Represents an AddSearchAttributesRequest. */
                class AddSearchAttributesRequest implements IAddSearchAttributesRequest {

                    /**
                     * Constructs a new AddSearchAttributesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IAddSearchAttributesRequest);

                    /** Mapping between search attribute name and its IndexedValueType. */
                    public searchAttributes: { [k: string]: temporal.api.enums.v1.IndexedValueType };

                    /** AddSearchAttributesRequest namespace. */
                    public namespace: string;

                    /**
                     * Creates a new AddSearchAttributesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddSearchAttributesRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IAddSearchAttributesRequest): temporal.api.operatorservice.v1.AddSearchAttributesRequest;

                    /**
                     * Encodes the specified AddSearchAttributesRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.AddSearchAttributesRequest.verify|verify} messages.
                     * @param message AddSearchAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IAddSearchAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddSearchAttributesRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.AddSearchAttributesRequest.verify|verify} messages.
                     * @param message AddSearchAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IAddSearchAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddSearchAttributesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddSearchAttributesRequest
                     * @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): temporal.api.operatorservice.v1.AddSearchAttributesRequest;

                    /**
                     * Decodes an AddSearchAttributesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddSearchAttributesRequest
                     * @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)): temporal.api.operatorservice.v1.AddSearchAttributesRequest;

                    /**
                     * Creates an AddSearchAttributesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddSearchAttributesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.AddSearchAttributesRequest;

                    /**
                     * Creates a plain object from an AddSearchAttributesRequest message. Also converts values to other types if specified.
                     * @param message AddSearchAttributesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.AddSearchAttributesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddSearchAttributesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddSearchAttributesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddSearchAttributesResponse. */
                interface IAddSearchAttributesResponse {
                }

                /** Represents an AddSearchAttributesResponse. */
                class AddSearchAttributesResponse implements IAddSearchAttributesResponse {

                    /**
                     * Constructs a new AddSearchAttributesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IAddSearchAttributesResponse);

                    /**
                     * Creates a new AddSearchAttributesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddSearchAttributesResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IAddSearchAttributesResponse): temporal.api.operatorservice.v1.AddSearchAttributesResponse;

                    /**
                     * Encodes the specified AddSearchAttributesResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.AddSearchAttributesResponse.verify|verify} messages.
                     * @param message AddSearchAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IAddSearchAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddSearchAttributesResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.AddSearchAttributesResponse.verify|verify} messages.
                     * @param message AddSearchAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IAddSearchAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddSearchAttributesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddSearchAttributesResponse
                     * @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): temporal.api.operatorservice.v1.AddSearchAttributesResponse;

                    /**
                     * Decodes an AddSearchAttributesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddSearchAttributesResponse
                     * @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)): temporal.api.operatorservice.v1.AddSearchAttributesResponse;

                    /**
                     * Creates an AddSearchAttributesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddSearchAttributesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.AddSearchAttributesResponse;

                    /**
                     * Creates a plain object from an AddSearchAttributesResponse message. Also converts values to other types if specified.
                     * @param message AddSearchAttributesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.AddSearchAttributesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddSearchAttributesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddSearchAttributesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveSearchAttributesRequest. */
                interface IRemoveSearchAttributesRequest {

                    /** Search attribute names to delete. */
                    searchAttributes?: (string[]|null);

                    /** RemoveSearchAttributesRequest namespace */
                    namespace?: (string|null);
                }

                /** Represents a RemoveSearchAttributesRequest. */
                class RemoveSearchAttributesRequest implements IRemoveSearchAttributesRequest {

                    /**
                     * Constructs a new RemoveSearchAttributesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IRemoveSearchAttributesRequest);

                    /** Search attribute names to delete. */
                    public searchAttributes: string[];

                    /** RemoveSearchAttributesRequest namespace. */
                    public namespace: string;

                    /**
                     * Creates a new RemoveSearchAttributesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveSearchAttributesRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IRemoveSearchAttributesRequest): temporal.api.operatorservice.v1.RemoveSearchAttributesRequest;

                    /**
                     * Encodes the specified RemoveSearchAttributesRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.RemoveSearchAttributesRequest.verify|verify} messages.
                     * @param message RemoveSearchAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IRemoveSearchAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveSearchAttributesRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.RemoveSearchAttributesRequest.verify|verify} messages.
                     * @param message RemoveSearchAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IRemoveSearchAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveSearchAttributesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveSearchAttributesRequest
                     * @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): temporal.api.operatorservice.v1.RemoveSearchAttributesRequest;

                    /**
                     * Decodes a RemoveSearchAttributesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveSearchAttributesRequest
                     * @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)): temporal.api.operatorservice.v1.RemoveSearchAttributesRequest;

                    /**
                     * Creates a RemoveSearchAttributesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveSearchAttributesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.RemoveSearchAttributesRequest;

                    /**
                     * Creates a plain object from a RemoveSearchAttributesRequest message. Also converts values to other types if specified.
                     * @param message RemoveSearchAttributesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.RemoveSearchAttributesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveSearchAttributesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveSearchAttributesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveSearchAttributesResponse. */
                interface IRemoveSearchAttributesResponse {
                }

                /** Represents a RemoveSearchAttributesResponse. */
                class RemoveSearchAttributesResponse implements IRemoveSearchAttributesResponse {

                    /**
                     * Constructs a new RemoveSearchAttributesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IRemoveSearchAttributesResponse);

                    /**
                     * Creates a new RemoveSearchAttributesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveSearchAttributesResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IRemoveSearchAttributesResponse): temporal.api.operatorservice.v1.RemoveSearchAttributesResponse;

                    /**
                     * Encodes the specified RemoveSearchAttributesResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.RemoveSearchAttributesResponse.verify|verify} messages.
                     * @param message RemoveSearchAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IRemoveSearchAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveSearchAttributesResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.RemoveSearchAttributesResponse.verify|verify} messages.
                     * @param message RemoveSearchAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IRemoveSearchAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveSearchAttributesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveSearchAttributesResponse
                     * @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): temporal.api.operatorservice.v1.RemoveSearchAttributesResponse;

                    /**
                     * Decodes a RemoveSearchAttributesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveSearchAttributesResponse
                     * @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)): temporal.api.operatorservice.v1.RemoveSearchAttributesResponse;

                    /**
                     * Creates a RemoveSearchAttributesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveSearchAttributesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.RemoveSearchAttributesResponse;

                    /**
                     * Creates a plain object from a RemoveSearchAttributesResponse message. Also converts values to other types if specified.
                     * @param message RemoveSearchAttributesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.RemoveSearchAttributesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveSearchAttributesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveSearchAttributesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListSearchAttributesRequest. */
                interface IListSearchAttributesRequest {

                    /** ListSearchAttributesRequest namespace */
                    namespace?: (string|null);
                }

                /** Represents a ListSearchAttributesRequest. */
                class ListSearchAttributesRequest implements IListSearchAttributesRequest {

                    /**
                     * Constructs a new ListSearchAttributesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IListSearchAttributesRequest);

                    /** ListSearchAttributesRequest namespace. */
                    public namespace: string;

                    /**
                     * Creates a new ListSearchAttributesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListSearchAttributesRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IListSearchAttributesRequest): temporal.api.operatorservice.v1.ListSearchAttributesRequest;

                    /**
                     * Encodes the specified ListSearchAttributesRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.ListSearchAttributesRequest.verify|verify} messages.
                     * @param message ListSearchAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IListSearchAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListSearchAttributesRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.ListSearchAttributesRequest.verify|verify} messages.
                     * @param message ListSearchAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IListSearchAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListSearchAttributesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListSearchAttributesRequest
                     * @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): temporal.api.operatorservice.v1.ListSearchAttributesRequest;

                    /**
                     * Decodes a ListSearchAttributesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListSearchAttributesRequest
                     * @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)): temporal.api.operatorservice.v1.ListSearchAttributesRequest;

                    /**
                     * Creates a ListSearchAttributesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListSearchAttributesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.ListSearchAttributesRequest;

                    /**
                     * Creates a plain object from a ListSearchAttributesRequest message. Also converts values to other types if specified.
                     * @param message ListSearchAttributesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.ListSearchAttributesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListSearchAttributesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListSearchAttributesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListSearchAttributesResponse. */
                interface IListSearchAttributesResponse {

                    /** Mapping between custom (user-registered) search attribute name to its IndexedValueType. */
                    customAttributes?: ({ [k: string]: temporal.api.enums.v1.IndexedValueType }|null);

                    /** Mapping between system (predefined) search attribute name to its IndexedValueType. */
                    systemAttributes?: ({ [k: string]: temporal.api.enums.v1.IndexedValueType }|null);

                    /** Mapping from the attribute name to the visibility storage native type. */
                    storageSchema?: ({ [k: string]: string }|null);
                }

                /** Represents a ListSearchAttributesResponse. */
                class ListSearchAttributesResponse implements IListSearchAttributesResponse {

                    /**
                     * Constructs a new ListSearchAttributesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IListSearchAttributesResponse);

                    /** Mapping between custom (user-registered) search attribute name to its IndexedValueType. */
                    public customAttributes: { [k: string]: temporal.api.enums.v1.IndexedValueType };

                    /** Mapping between system (predefined) search attribute name to its IndexedValueType. */
                    public systemAttributes: { [k: string]: temporal.api.enums.v1.IndexedValueType };

                    /** Mapping from the attribute name to the visibility storage native type. */
                    public storageSchema: { [k: string]: string };

                    /**
                     * Creates a new ListSearchAttributesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListSearchAttributesResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IListSearchAttributesResponse): temporal.api.operatorservice.v1.ListSearchAttributesResponse;

                    /**
                     * Encodes the specified ListSearchAttributesResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.ListSearchAttributesResponse.verify|verify} messages.
                     * @param message ListSearchAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IListSearchAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListSearchAttributesResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.ListSearchAttributesResponse.verify|verify} messages.
                     * @param message ListSearchAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IListSearchAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListSearchAttributesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListSearchAttributesResponse
                     * @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): temporal.api.operatorservice.v1.ListSearchAttributesResponse;

                    /**
                     * Decodes a ListSearchAttributesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListSearchAttributesResponse
                     * @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)): temporal.api.operatorservice.v1.ListSearchAttributesResponse;

                    /**
                     * Creates a ListSearchAttributesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListSearchAttributesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.ListSearchAttributesResponse;

                    /**
                     * Creates a plain object from a ListSearchAttributesResponse message. Also converts values to other types if specified.
                     * @param message ListSearchAttributesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.ListSearchAttributesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListSearchAttributesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListSearchAttributesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteNamespaceRequest. */
                interface IDeleteNamespaceRequest {

                    /** Only one of namespace or namespace_id must be specified to identify namespace. */
                    namespace?: (string|null);

                    /** DeleteNamespaceRequest namespaceId */
                    namespaceId?: (string|null);

                    /**
                     * If provided, the deletion of namespace info will be delayed for the given duration (0 means no delay).
                     * If not provided, the default delay configured in the cluster will be used.
                     */
                    namespaceDeleteDelay?: (google.protobuf.IDuration|null);
                }

                /** Represents a DeleteNamespaceRequest. */
                class DeleteNamespaceRequest implements IDeleteNamespaceRequest {

                    /**
                     * Constructs a new DeleteNamespaceRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IDeleteNamespaceRequest);

                    /** Only one of namespace or namespace_id must be specified to identify namespace. */
                    public namespace: string;

                    /** DeleteNamespaceRequest namespaceId. */
                    public namespaceId: string;

                    /**
                     * If provided, the deletion of namespace info will be delayed for the given duration (0 means no delay).
                     * If not provided, the default delay configured in the cluster will be used.
                     */
                    public namespaceDeleteDelay?: (google.protobuf.IDuration|null);

                    /**
                     * Creates a new DeleteNamespaceRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteNamespaceRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IDeleteNamespaceRequest): temporal.api.operatorservice.v1.DeleteNamespaceRequest;

                    /**
                     * Encodes the specified DeleteNamespaceRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.DeleteNamespaceRequest.verify|verify} messages.
                     * @param message DeleteNamespaceRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IDeleteNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteNamespaceRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.DeleteNamespaceRequest.verify|verify} messages.
                     * @param message DeleteNamespaceRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IDeleteNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteNamespaceRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteNamespaceRequest
                     * @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): temporal.api.operatorservice.v1.DeleteNamespaceRequest;

                    /**
                     * Decodes a DeleteNamespaceRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteNamespaceRequest
                     * @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)): temporal.api.operatorservice.v1.DeleteNamespaceRequest;

                    /**
                     * Creates a DeleteNamespaceRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteNamespaceRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.DeleteNamespaceRequest;

                    /**
                     * Creates a plain object from a DeleteNamespaceRequest message. Also converts values to other types if specified.
                     * @param message DeleteNamespaceRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.DeleteNamespaceRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteNamespaceRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteNamespaceRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteNamespaceResponse. */
                interface IDeleteNamespaceResponse {

                    /** Temporary namespace name that is used during reclaim resources step. */
                    deletedNamespace?: (string|null);
                }

                /** Represents a DeleteNamespaceResponse. */
                class DeleteNamespaceResponse implements IDeleteNamespaceResponse {

                    /**
                     * Constructs a new DeleteNamespaceResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IDeleteNamespaceResponse);

                    /** Temporary namespace name that is used during reclaim resources step. */
                    public deletedNamespace: string;

                    /**
                     * Creates a new DeleteNamespaceResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteNamespaceResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IDeleteNamespaceResponse): temporal.api.operatorservice.v1.DeleteNamespaceResponse;

                    /**
                     * Encodes the specified DeleteNamespaceResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.DeleteNamespaceResponse.verify|verify} messages.
                     * @param message DeleteNamespaceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IDeleteNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteNamespaceResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.DeleteNamespaceResponse.verify|verify} messages.
                     * @param message DeleteNamespaceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IDeleteNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteNamespaceResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteNamespaceResponse
                     * @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): temporal.api.operatorservice.v1.DeleteNamespaceResponse;

                    /**
                     * Decodes a DeleteNamespaceResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteNamespaceResponse
                     * @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)): temporal.api.operatorservice.v1.DeleteNamespaceResponse;

                    /**
                     * Creates a DeleteNamespaceResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteNamespaceResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.DeleteNamespaceResponse;

                    /**
                     * Creates a plain object from a DeleteNamespaceResponse message. Also converts values to other types if specified.
                     * @param message DeleteNamespaceResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.DeleteNamespaceResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteNamespaceResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteNamespaceResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddOrUpdateRemoteClusterRequest. */
                interface IAddOrUpdateRemoteClusterRequest {

                    /** Frontend Address is a cross cluster accessible address for gRPC traffic. This field is required. */
                    frontendAddress?: (string|null);

                    /** Flag to enable / disable the cross cluster connection. */
                    enableRemoteClusterConnection?: (boolean|null);

                    /**
                     * Frontend HTTP Address is a cross cluster accessible address for HTTP traffic. This field is optional. If not provided
                     * on update, the existing HTTP address will be removed.
                     */
                    frontendHttpAddress?: (string|null);

                    /** Controls whether replication streams are active. */
                    enableReplication?: (boolean|null);
                }

                /** Represents an AddOrUpdateRemoteClusterRequest. */
                class AddOrUpdateRemoteClusterRequest implements IAddOrUpdateRemoteClusterRequest {

                    /**
                     * Constructs a new AddOrUpdateRemoteClusterRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IAddOrUpdateRemoteClusterRequest);

                    /** Frontend Address is a cross cluster accessible address for gRPC traffic. This field is required. */
                    public frontendAddress: string;

                    /** Flag to enable / disable the cross cluster connection. */
                    public enableRemoteClusterConnection: boolean;

                    /**
                     * Frontend HTTP Address is a cross cluster accessible address for HTTP traffic. This field is optional. If not provided
                     * on update, the existing HTTP address will be removed.
                     */
                    public frontendHttpAddress: string;

                    /** Controls whether replication streams are active. */
                    public enableReplication: boolean;

                    /**
                     * Creates a new AddOrUpdateRemoteClusterRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddOrUpdateRemoteClusterRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IAddOrUpdateRemoteClusterRequest): temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterRequest;

                    /**
                     * Encodes the specified AddOrUpdateRemoteClusterRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterRequest.verify|verify} messages.
                     * @param message AddOrUpdateRemoteClusterRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IAddOrUpdateRemoteClusterRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddOrUpdateRemoteClusterRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterRequest.verify|verify} messages.
                     * @param message AddOrUpdateRemoteClusterRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IAddOrUpdateRemoteClusterRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddOrUpdateRemoteClusterRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddOrUpdateRemoteClusterRequest
                     * @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): temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterRequest;

                    /**
                     * Decodes an AddOrUpdateRemoteClusterRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddOrUpdateRemoteClusterRequest
                     * @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)): temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterRequest;

                    /**
                     * Creates an AddOrUpdateRemoteClusterRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddOrUpdateRemoteClusterRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterRequest;

                    /**
                     * Creates a plain object from an AddOrUpdateRemoteClusterRequest message. Also converts values to other types if specified.
                     * @param message AddOrUpdateRemoteClusterRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddOrUpdateRemoteClusterRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddOrUpdateRemoteClusterRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddOrUpdateRemoteClusterResponse. */
                interface IAddOrUpdateRemoteClusterResponse {
                }

                /** Represents an AddOrUpdateRemoteClusterResponse. */
                class AddOrUpdateRemoteClusterResponse implements IAddOrUpdateRemoteClusterResponse {

                    /**
                     * Constructs a new AddOrUpdateRemoteClusterResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IAddOrUpdateRemoteClusterResponse);

                    /**
                     * Creates a new AddOrUpdateRemoteClusterResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddOrUpdateRemoteClusterResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IAddOrUpdateRemoteClusterResponse): temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterResponse;

                    /**
                     * Encodes the specified AddOrUpdateRemoteClusterResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterResponse.verify|verify} messages.
                     * @param message AddOrUpdateRemoteClusterResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IAddOrUpdateRemoteClusterResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddOrUpdateRemoteClusterResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterResponse.verify|verify} messages.
                     * @param message AddOrUpdateRemoteClusterResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IAddOrUpdateRemoteClusterResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddOrUpdateRemoteClusterResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddOrUpdateRemoteClusterResponse
                     * @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): temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterResponse;

                    /**
                     * Decodes an AddOrUpdateRemoteClusterResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddOrUpdateRemoteClusterResponse
                     * @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)): temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterResponse;

                    /**
                     * Creates an AddOrUpdateRemoteClusterResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddOrUpdateRemoteClusterResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterResponse;

                    /**
                     * Creates a plain object from an AddOrUpdateRemoteClusterResponse message. Also converts values to other types if specified.
                     * @param message AddOrUpdateRemoteClusterResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.AddOrUpdateRemoteClusterResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddOrUpdateRemoteClusterResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddOrUpdateRemoteClusterResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveRemoteClusterRequest. */
                interface IRemoveRemoteClusterRequest {

                    /** Remote cluster name to be removed. */
                    clusterName?: (string|null);
                }

                /** Represents a RemoveRemoteClusterRequest. */
                class RemoveRemoteClusterRequest implements IRemoveRemoteClusterRequest {

                    /**
                     * Constructs a new RemoveRemoteClusterRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IRemoveRemoteClusterRequest);

                    /** Remote cluster name to be removed. */
                    public clusterName: string;

                    /**
                     * Creates a new RemoveRemoteClusterRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveRemoteClusterRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IRemoveRemoteClusterRequest): temporal.api.operatorservice.v1.RemoveRemoteClusterRequest;

                    /**
                     * Encodes the specified RemoveRemoteClusterRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.RemoveRemoteClusterRequest.verify|verify} messages.
                     * @param message RemoveRemoteClusterRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IRemoveRemoteClusterRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveRemoteClusterRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.RemoveRemoteClusterRequest.verify|verify} messages.
                     * @param message RemoveRemoteClusterRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IRemoveRemoteClusterRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveRemoteClusterRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveRemoteClusterRequest
                     * @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): temporal.api.operatorservice.v1.RemoveRemoteClusterRequest;

                    /**
                     * Decodes a RemoveRemoteClusterRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveRemoteClusterRequest
                     * @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)): temporal.api.operatorservice.v1.RemoveRemoteClusterRequest;

                    /**
                     * Creates a RemoveRemoteClusterRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveRemoteClusterRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.RemoveRemoteClusterRequest;

                    /**
                     * Creates a plain object from a RemoveRemoteClusterRequest message. Also converts values to other types if specified.
                     * @param message RemoveRemoteClusterRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.RemoveRemoteClusterRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveRemoteClusterRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveRemoteClusterRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveRemoteClusterResponse. */
                interface IRemoveRemoteClusterResponse {
                }

                /** Represents a RemoveRemoteClusterResponse. */
                class RemoveRemoteClusterResponse implements IRemoveRemoteClusterResponse {

                    /**
                     * Constructs a new RemoveRemoteClusterResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IRemoveRemoteClusterResponse);

                    /**
                     * Creates a new RemoveRemoteClusterResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveRemoteClusterResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IRemoveRemoteClusterResponse): temporal.api.operatorservice.v1.RemoveRemoteClusterResponse;

                    /**
                     * Encodes the specified RemoveRemoteClusterResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.RemoveRemoteClusterResponse.verify|verify} messages.
                     * @param message RemoveRemoteClusterResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IRemoveRemoteClusterResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveRemoteClusterResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.RemoveRemoteClusterResponse.verify|verify} messages.
                     * @param message RemoveRemoteClusterResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IRemoveRemoteClusterResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveRemoteClusterResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveRemoteClusterResponse
                     * @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): temporal.api.operatorservice.v1.RemoveRemoteClusterResponse;

                    /**
                     * Decodes a RemoveRemoteClusterResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveRemoteClusterResponse
                     * @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)): temporal.api.operatorservice.v1.RemoveRemoteClusterResponse;

                    /**
                     * Creates a RemoveRemoteClusterResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveRemoteClusterResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.RemoveRemoteClusterResponse;

                    /**
                     * Creates a plain object from a RemoveRemoteClusterResponse message. Also converts values to other types if specified.
                     * @param message RemoveRemoteClusterResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.RemoveRemoteClusterResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveRemoteClusterResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveRemoteClusterResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListClustersRequest. */
                interface IListClustersRequest {

                    /** ListClustersRequest pageSize */
                    pageSize?: (number|null);

                    /** ListClustersRequest nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListClustersRequest. */
                class ListClustersRequest implements IListClustersRequest {

                    /**
                     * Constructs a new ListClustersRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IListClustersRequest);

                    /** ListClustersRequest pageSize. */
                    public pageSize: number;

                    /** ListClustersRequest nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListClustersRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListClustersRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IListClustersRequest): temporal.api.operatorservice.v1.ListClustersRequest;

                    /**
                     * Encodes the specified ListClustersRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.ListClustersRequest.verify|verify} messages.
                     * @param message ListClustersRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IListClustersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListClustersRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.ListClustersRequest.verify|verify} messages.
                     * @param message ListClustersRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IListClustersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListClustersRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListClustersRequest
                     * @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): temporal.api.operatorservice.v1.ListClustersRequest;

                    /**
                     * Decodes a ListClustersRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListClustersRequest
                     * @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)): temporal.api.operatorservice.v1.ListClustersRequest;

                    /**
                     * Creates a ListClustersRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListClustersRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.ListClustersRequest;

                    /**
                     * Creates a plain object from a ListClustersRequest message. Also converts values to other types if specified.
                     * @param message ListClustersRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.ListClustersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListClustersRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListClustersRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListClustersResponse. */
                interface IListClustersResponse {

                    /** List of all cluster information */
                    clusters?: (temporal.api.operatorservice.v1.IClusterMetadata[]|null);

                    /** ListClustersResponse nextPageToken */
                    nextPageToken?: (Uint8Array|null);
                }

                /** Represents a ListClustersResponse. */
                class ListClustersResponse implements IListClustersResponse {

                    /**
                     * Constructs a new ListClustersResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IListClustersResponse);

                    /** List of all cluster information */
                    public clusters: temporal.api.operatorservice.v1.IClusterMetadata[];

                    /** ListClustersResponse nextPageToken. */
                    public nextPageToken: Uint8Array;

                    /**
                     * Creates a new ListClustersResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListClustersResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IListClustersResponse): temporal.api.operatorservice.v1.ListClustersResponse;

                    /**
                     * Encodes the specified ListClustersResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.ListClustersResponse.verify|verify} messages.
                     * @param message ListClustersResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IListClustersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListClustersResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.ListClustersResponse.verify|verify} messages.
                     * @param message ListClustersResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IListClustersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListClustersResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListClustersResponse
                     * @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): temporal.api.operatorservice.v1.ListClustersResponse;

                    /**
                     * Decodes a ListClustersResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListClustersResponse
                     * @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)): temporal.api.operatorservice.v1.ListClustersResponse;

                    /**
                     * Creates a ListClustersResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListClustersResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.ListClustersResponse;

                    /**
                     * Creates a plain object from a ListClustersResponse message. Also converts values to other types if specified.
                     * @param message ListClustersResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.ListClustersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListClustersResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListClustersResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ClusterMetadata. */
                interface IClusterMetadata {

                    /** Name of the cluster name. */
                    clusterName?: (string|null);

                    /** Id of the cluster. */
                    clusterId?: (string|null);

                    /** gRPC address. */
                    address?: (string|null);

                    /** HTTP address, if one exists. */
                    httpAddress?: (string|null);

                    /** A unique failover version across all connected clusters. */
                    initialFailoverVersion?: (Long|null);

                    /** History service shard number. */
                    historyShardCount?: (number|null);

                    /** A flag to indicate if a connection is active. */
                    isConnectionEnabled?: (boolean|null);

                    /** A flag to indicate if replication is enabled. */
                    isReplicationEnabled?: (boolean|null);
                }

                /** Represents a ClusterMetadata. */
                class ClusterMetadata implements IClusterMetadata {

                    /**
                     * Constructs a new ClusterMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IClusterMetadata);

                    /** Name of the cluster name. */
                    public clusterName: string;

                    /** Id of the cluster. */
                    public clusterId: string;

                    /** gRPC address. */
                    public address: string;

                    /** HTTP address, if one exists. */
                    public httpAddress: string;

                    /** A unique failover version across all connected clusters. */
                    public initialFailoverVersion: Long;

                    /** History service shard number. */
                    public historyShardCount: number;

                    /** A flag to indicate if a connection is active. */
                    public isConnectionEnabled: boolean;

                    /** A flag to indicate if replication is enabled. */
                    public isReplicationEnabled: boolean;

                    /**
                     * Creates a new ClusterMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ClusterMetadata instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IClusterMetadata): temporal.api.operatorservice.v1.ClusterMetadata;

                    /**
                     * Encodes the specified ClusterMetadata message. Does not implicitly {@link temporal.api.operatorservice.v1.ClusterMetadata.verify|verify} messages.
                     * @param message ClusterMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IClusterMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ClusterMetadata message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.ClusterMetadata.verify|verify} messages.
                     * @param message ClusterMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IClusterMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ClusterMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ClusterMetadata
                     * @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): temporal.api.operatorservice.v1.ClusterMetadata;

                    /**
                     * Decodes a ClusterMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ClusterMetadata
                     * @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)): temporal.api.operatorservice.v1.ClusterMetadata;

                    /**
                     * Creates a ClusterMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ClusterMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.ClusterMetadata;

                    /**
                     * Creates a plain object from a ClusterMetadata message. Also converts values to other types if specified.
                     * @param message ClusterMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.ClusterMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ClusterMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ClusterMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetNexusEndpointRequest. */
                interface IGetNexusEndpointRequest {

                    /** Server-generated unique endpoint ID. */
                    id?: (string|null);
                }

                /** Represents a GetNexusEndpointRequest. */
                class GetNexusEndpointRequest implements IGetNexusEndpointRequest {

                    /**
                     * Constructs a new GetNexusEndpointRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IGetNexusEndpointRequest);

                    /** Server-generated unique endpoint ID. */
                    public id: string;

                    /**
                     * Creates a new GetNexusEndpointRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetNexusEndpointRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IGetNexusEndpointRequest): temporal.api.operatorservice.v1.GetNexusEndpointRequest;

                    /**
                     * Encodes the specified GetNexusEndpointRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.GetNexusEndpointRequest.verify|verify} messages.
                     * @param message GetNexusEndpointRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IGetNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetNexusEndpointRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.GetNexusEndpointRequest.verify|verify} messages.
                     * @param message GetNexusEndpointRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IGetNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetNexusEndpointRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetNexusEndpointRequest
                     * @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): temporal.api.operatorservice.v1.GetNexusEndpointRequest;

                    /**
                     * Decodes a GetNexusEndpointRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetNexusEndpointRequest
                     * @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)): temporal.api.operatorservice.v1.GetNexusEndpointRequest;

                    /**
                     * Creates a GetNexusEndpointRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetNexusEndpointRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.GetNexusEndpointRequest;

                    /**
                     * Creates a plain object from a GetNexusEndpointRequest message. Also converts values to other types if specified.
                     * @param message GetNexusEndpointRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.GetNexusEndpointRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetNexusEndpointRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetNexusEndpointRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetNexusEndpointResponse. */
                interface IGetNexusEndpointResponse {

                    /** GetNexusEndpointResponse endpoint */
                    endpoint?: (temporal.api.nexus.v1.IEndpoint|null);
                }

                /** Represents a GetNexusEndpointResponse. */
                class GetNexusEndpointResponse implements IGetNexusEndpointResponse {

                    /**
                     * Constructs a new GetNexusEndpointResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IGetNexusEndpointResponse);

                    /** GetNexusEndpointResponse endpoint. */
                    public endpoint?: (temporal.api.nexus.v1.IEndpoint|null);

                    /**
                     * Creates a new GetNexusEndpointResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetNexusEndpointResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IGetNexusEndpointResponse): temporal.api.operatorservice.v1.GetNexusEndpointResponse;

                    /**
                     * Encodes the specified GetNexusEndpointResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.GetNexusEndpointResponse.verify|verify} messages.
                     * @param message GetNexusEndpointResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IGetNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetNexusEndpointResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.GetNexusEndpointResponse.verify|verify} messages.
                     * @param message GetNexusEndpointResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IGetNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetNexusEndpointResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetNexusEndpointResponse
                     * @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): temporal.api.operatorservice.v1.GetNexusEndpointResponse;

                    /**
                     * Decodes a GetNexusEndpointResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetNexusEndpointResponse
                     * @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)): temporal.api.operatorservice.v1.GetNexusEndpointResponse;

                    /**
                     * Creates a GetNexusEndpointResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetNexusEndpointResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.GetNexusEndpointResponse;

                    /**
                     * Creates a plain object from a GetNexusEndpointResponse message. Also converts values to other types if specified.
                     * @param message GetNexusEndpointResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.GetNexusEndpointResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetNexusEndpointResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetNexusEndpointResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateNexusEndpointRequest. */
                interface ICreateNexusEndpointRequest {

                    /** Endpoint definition to create. */
                    spec?: (temporal.api.nexus.v1.IEndpointSpec|null);
                }

                /** Represents a CreateNexusEndpointRequest. */
                class CreateNexusEndpointRequest implements ICreateNexusEndpointRequest {

                    /**
                     * Constructs a new CreateNexusEndpointRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.ICreateNexusEndpointRequest);

                    /** Endpoint definition to create. */
                    public spec?: (temporal.api.nexus.v1.IEndpointSpec|null);

                    /**
                     * Creates a new CreateNexusEndpointRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateNexusEndpointRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.ICreateNexusEndpointRequest): temporal.api.operatorservice.v1.CreateNexusEndpointRequest;

                    /**
                     * Encodes the specified CreateNexusEndpointRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.CreateNexusEndpointRequest.verify|verify} messages.
                     * @param message CreateNexusEndpointRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.ICreateNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateNexusEndpointRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.CreateNexusEndpointRequest.verify|verify} messages.
                     * @param message CreateNexusEndpointRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.ICreateNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateNexusEndpointRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateNexusEndpointRequest
                     * @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): temporal.api.operatorservice.v1.CreateNexusEndpointRequest;

                    /**
                     * Decodes a CreateNexusEndpointRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateNexusEndpointRequest
                     * @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)): temporal.api.operatorservice.v1.CreateNexusEndpointRequest;

                    /**
                     * Creates a CreateNexusEndpointRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateNexusEndpointRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.CreateNexusEndpointRequest;

                    /**
                     * Creates a plain object from a CreateNexusEndpointRequest message. Also converts values to other types if specified.
                     * @param message CreateNexusEndpointRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.CreateNexusEndpointRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateNexusEndpointRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateNexusEndpointRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateNexusEndpointResponse. */
                interface ICreateNexusEndpointResponse {

                    /** Data post acceptance. Can be used to issue additional updates to this record. */
                    endpoint?: (temporal.api.nexus.v1.IEndpoint|null);
                }

                /** Represents a CreateNexusEndpointResponse. */
                class CreateNexusEndpointResponse implements ICreateNexusEndpointResponse {

                    /**
                     * Constructs a new CreateNexusEndpointResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.ICreateNexusEndpointResponse);

                    /** Data post acceptance. Can be used to issue additional updates to this record. */
                    public endpoint?: (temporal.api.nexus.v1.IEndpoint|null);

                    /**
                     * Creates a new CreateNexusEndpointResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateNexusEndpointResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.ICreateNexusEndpointResponse): temporal.api.operatorservice.v1.CreateNexusEndpointResponse;

                    /**
                     * Encodes the specified CreateNexusEndpointResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.CreateNexusEndpointResponse.verify|verify} messages.
                     * @param message CreateNexusEndpointResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.ICreateNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateNexusEndpointResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.CreateNexusEndpointResponse.verify|verify} messages.
                     * @param message CreateNexusEndpointResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.ICreateNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateNexusEndpointResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateNexusEndpointResponse
                     * @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): temporal.api.operatorservice.v1.CreateNexusEndpointResponse;

                    /**
                     * Decodes a CreateNexusEndpointResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateNexusEndpointResponse
                     * @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)): temporal.api.operatorservice.v1.CreateNexusEndpointResponse;

                    /**
                     * Creates a CreateNexusEndpointResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateNexusEndpointResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.CreateNexusEndpointResponse;

                    /**
                     * Creates a plain object from a CreateNexusEndpointResponse message. Also converts values to other types if specified.
                     * @param message CreateNexusEndpointResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.CreateNexusEndpointResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateNexusEndpointResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateNexusEndpointResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateNexusEndpointRequest. */
                interface IUpdateNexusEndpointRequest {

                    /** Server-generated unique endpoint ID. */
                    id?: (string|null);

                    /** Data version for this endpoint. Must match current version. */
                    version?: (Long|null);

                    /** UpdateNexusEndpointRequest spec */
                    spec?: (temporal.api.nexus.v1.IEndpointSpec|null);
                }

                /** Represents an UpdateNexusEndpointRequest. */
                class UpdateNexusEndpointRequest implements IUpdateNexusEndpointRequest {

                    /**
                     * Constructs a new UpdateNexusEndpointRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IUpdateNexusEndpointRequest);

                    /** Server-generated unique endpoint ID. */
                    public id: string;

                    /** Data version for this endpoint. Must match current version. */
                    public version: Long;

                    /** UpdateNexusEndpointRequest spec. */
                    public spec?: (temporal.api.nexus.v1.IEndpointSpec|null);

                    /**
                     * Creates a new UpdateNexusEndpointRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateNexusEndpointRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IUpdateNexusEndpointRequest): temporal.api.operatorservice.v1.UpdateNexusEndpointRequest;

                    /**
                     * Encodes the specified UpdateNexusEndpointRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.UpdateNexusEndpointRequest.verify|verify} messages.
                     * @param message UpdateNexusEndpointRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IUpdateNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateNexusEndpointRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.UpdateNexusEndpointRequest.verify|verify} messages.
                     * @param message UpdateNexusEndpointRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IUpdateNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateNexusEndpointRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateNexusEndpointRequest
                     * @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): temporal.api.operatorservice.v1.UpdateNexusEndpointRequest;

                    /**
                     * Decodes an UpdateNexusEndpointRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateNexusEndpointRequest
                     * @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)): temporal.api.operatorservice.v1.UpdateNexusEndpointRequest;

                    /**
                     * Creates an UpdateNexusEndpointRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateNexusEndpointRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.UpdateNexusEndpointRequest;

                    /**
                     * Creates a plain object from an UpdateNexusEndpointRequest message. Also converts values to other types if specified.
                     * @param message UpdateNexusEndpointRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.UpdateNexusEndpointRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateNexusEndpointRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateNexusEndpointRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateNexusEndpointResponse. */
                interface IUpdateNexusEndpointResponse {

                    /** Data post acceptance. Can be used to issue additional updates to this record. */
                    endpoint?: (temporal.api.nexus.v1.IEndpoint|null);
                }

                /** Represents an UpdateNexusEndpointResponse. */
                class UpdateNexusEndpointResponse implements IUpdateNexusEndpointResponse {

                    /**
                     * Constructs a new UpdateNexusEndpointResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IUpdateNexusEndpointResponse);

                    /** Data post acceptance. Can be used to issue additional updates to this record. */
                    public endpoint?: (temporal.api.nexus.v1.IEndpoint|null);

                    /**
                     * Creates a new UpdateNexusEndpointResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateNexusEndpointResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IUpdateNexusEndpointResponse): temporal.api.operatorservice.v1.UpdateNexusEndpointResponse;

                    /**
                     * Encodes the specified UpdateNexusEndpointResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.UpdateNexusEndpointResponse.verify|verify} messages.
                     * @param message UpdateNexusEndpointResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IUpdateNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateNexusEndpointResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.UpdateNexusEndpointResponse.verify|verify} messages.
                     * @param message UpdateNexusEndpointResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IUpdateNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateNexusEndpointResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateNexusEndpointResponse
                     * @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): temporal.api.operatorservice.v1.UpdateNexusEndpointResponse;

                    /**
                     * Decodes an UpdateNexusEndpointResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateNexusEndpointResponse
                     * @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)): temporal.api.operatorservice.v1.UpdateNexusEndpointResponse;

                    /**
                     * Creates an UpdateNexusEndpointResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateNexusEndpointResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.UpdateNexusEndpointResponse;

                    /**
                     * Creates a plain object from an UpdateNexusEndpointResponse message. Also converts values to other types if specified.
                     * @param message UpdateNexusEndpointResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.UpdateNexusEndpointResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateNexusEndpointResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateNexusEndpointResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteNexusEndpointRequest. */
                interface IDeleteNexusEndpointRequest {

                    /** Server-generated unique endpoint ID. */
                    id?: (string|null);

                    /** Data version for this endpoint. Must match current version. */
                    version?: (Long|null);
                }

                /** Represents a DeleteNexusEndpointRequest. */
                class DeleteNexusEndpointRequest implements IDeleteNexusEndpointRequest {

                    /**
                     * Constructs a new DeleteNexusEndpointRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IDeleteNexusEndpointRequest);

                    /** Server-generated unique endpoint ID. */
                    public id: string;

                    /** Data version for this endpoint. Must match current version. */
                    public version: Long;

                    /**
                     * Creates a new DeleteNexusEndpointRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteNexusEndpointRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IDeleteNexusEndpointRequest): temporal.api.operatorservice.v1.DeleteNexusEndpointRequest;

                    /**
                     * Encodes the specified DeleteNexusEndpointRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.DeleteNexusEndpointRequest.verify|verify} messages.
                     * @param message DeleteNexusEndpointRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IDeleteNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteNexusEndpointRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.DeleteNexusEndpointRequest.verify|verify} messages.
                     * @param message DeleteNexusEndpointRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IDeleteNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteNexusEndpointRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteNexusEndpointRequest
                     * @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): temporal.api.operatorservice.v1.DeleteNexusEndpointRequest;

                    /**
                     * Decodes a DeleteNexusEndpointRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteNexusEndpointRequest
                     * @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)): temporal.api.operatorservice.v1.DeleteNexusEndpointRequest;

                    /**
                     * Creates a DeleteNexusEndpointRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteNexusEndpointRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.DeleteNexusEndpointRequest;

                    /**
                     * Creates a plain object from a DeleteNexusEndpointRequest message. Also converts values to other types if specified.
                     * @param message DeleteNexusEndpointRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.DeleteNexusEndpointRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteNexusEndpointRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteNexusEndpointRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteNexusEndpointResponse. */
                interface IDeleteNexusEndpointResponse {
                }

                /** Represents a DeleteNexusEndpointResponse. */
                class DeleteNexusEndpointResponse implements IDeleteNexusEndpointResponse {

                    /**
                     * Constructs a new DeleteNexusEndpointResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IDeleteNexusEndpointResponse);

                    /**
                     * Creates a new DeleteNexusEndpointResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteNexusEndpointResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IDeleteNexusEndpointResponse): temporal.api.operatorservice.v1.DeleteNexusEndpointResponse;

                    /**
                     * Encodes the specified DeleteNexusEndpointResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.DeleteNexusEndpointResponse.verify|verify} messages.
                     * @param message DeleteNexusEndpointResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IDeleteNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteNexusEndpointResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.DeleteNexusEndpointResponse.verify|verify} messages.
                     * @param message DeleteNexusEndpointResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IDeleteNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteNexusEndpointResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteNexusEndpointResponse
                     * @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): temporal.api.operatorservice.v1.DeleteNexusEndpointResponse;

                    /**
                     * Decodes a DeleteNexusEndpointResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteNexusEndpointResponse
                     * @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)): temporal.api.operatorservice.v1.DeleteNexusEndpointResponse;

                    /**
                     * Creates a DeleteNexusEndpointResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteNexusEndpointResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.DeleteNexusEndpointResponse;

                    /**
                     * Creates a plain object from a DeleteNexusEndpointResponse message. Also converts values to other types if specified.
                     * @param message DeleteNexusEndpointResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.DeleteNexusEndpointResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteNexusEndpointResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteNexusEndpointResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListNexusEndpointsRequest. */
                interface IListNexusEndpointsRequest {

                    /** ListNexusEndpointsRequest pageSize */
                    pageSize?: (number|null);

                    /**
                     * To get the next page, pass in `ListNexusEndpointsResponse.next_page_token` from the previous page's
                     * response, the token will be empty if there's no other page.
                     * Note: the last page may be empty if the total number of endpoints registered is a multiple of the page size.
                     */
                    nextPageToken?: (Uint8Array|null);

                    /**
                     * Name of the incoming endpoint to filter on - optional. Specifying this will result in zero or one results.
                     * (-- api-linter: core::203::field-behavior-required=disabled
                     * aip.dev/not-precedent: Not following linter rules. --)
                     */
                    name?: (string|null);
                }

                /** Represents a ListNexusEndpointsRequest. */
                class ListNexusEndpointsRequest implements IListNexusEndpointsRequest {

                    /**
                     * Constructs a new ListNexusEndpointsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IListNexusEndpointsRequest);

                    /** ListNexusEndpointsRequest pageSize. */
                    public pageSize: number;

                    /**
                     * To get the next page, pass in `ListNexusEndpointsResponse.next_page_token` from the previous page's
                     * response, the token will be empty if there's no other page.
                     * Note: the last page may be empty if the total number of endpoints registered is a multiple of the page size.
                     */
                    public nextPageToken: Uint8Array;

                    /**
                     * Name of the incoming endpoint to filter on - optional. Specifying this will result in zero or one results.
                     * (-- api-linter: core::203::field-behavior-required=disabled
                     * aip.dev/not-precedent: Not following linter rules. --)
                     */
                    public name: string;

                    /**
                     * Creates a new ListNexusEndpointsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListNexusEndpointsRequest instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IListNexusEndpointsRequest): temporal.api.operatorservice.v1.ListNexusEndpointsRequest;

                    /**
                     * Encodes the specified ListNexusEndpointsRequest message. Does not implicitly {@link temporal.api.operatorservice.v1.ListNexusEndpointsRequest.verify|verify} messages.
                     * @param message ListNexusEndpointsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IListNexusEndpointsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListNexusEndpointsRequest message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.ListNexusEndpointsRequest.verify|verify} messages.
                     * @param message ListNexusEndpointsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IListNexusEndpointsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListNexusEndpointsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListNexusEndpointsRequest
                     * @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): temporal.api.operatorservice.v1.ListNexusEndpointsRequest;

                    /**
                     * Decodes a ListNexusEndpointsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListNexusEndpointsRequest
                     * @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)): temporal.api.operatorservice.v1.ListNexusEndpointsRequest;

                    /**
                     * Creates a ListNexusEndpointsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListNexusEndpointsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.ListNexusEndpointsRequest;

                    /**
                     * Creates a plain object from a ListNexusEndpointsRequest message. Also converts values to other types if specified.
                     * @param message ListNexusEndpointsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.ListNexusEndpointsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListNexusEndpointsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListNexusEndpointsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListNexusEndpointsResponse. */
                interface IListNexusEndpointsResponse {

                    /** Token for getting the next page. */
                    nextPageToken?: (Uint8Array|null);

                    /** ListNexusEndpointsResponse endpoints */
                    endpoints?: (temporal.api.nexus.v1.IEndpoint[]|null);
                }

                /** Represents a ListNexusEndpointsResponse. */
                class ListNexusEndpointsResponse implements IListNexusEndpointsResponse {

                    /**
                     * Constructs a new ListNexusEndpointsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.operatorservice.v1.IListNexusEndpointsResponse);

                    /** Token for getting the next page. */
                    public nextPageToken: Uint8Array;

                    /** ListNexusEndpointsResponse endpoints. */
                    public endpoints: temporal.api.nexus.v1.IEndpoint[];

                    /**
                     * Creates a new ListNexusEndpointsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListNexusEndpointsResponse instance
                     */
                    public static create(properties?: temporal.api.operatorservice.v1.IListNexusEndpointsResponse): temporal.api.operatorservice.v1.ListNexusEndpointsResponse;

                    /**
                     * Encodes the specified ListNexusEndpointsResponse message. Does not implicitly {@link temporal.api.operatorservice.v1.ListNexusEndpointsResponse.verify|verify} messages.
                     * @param message ListNexusEndpointsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.operatorservice.v1.IListNexusEndpointsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListNexusEndpointsResponse message, length delimited. Does not implicitly {@link temporal.api.operatorservice.v1.ListNexusEndpointsResponse.verify|verify} messages.
                     * @param message ListNexusEndpointsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.operatorservice.v1.IListNexusEndpointsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListNexusEndpointsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListNexusEndpointsResponse
                     * @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): temporal.api.operatorservice.v1.ListNexusEndpointsResponse;

                    /**
                     * Decodes a ListNexusEndpointsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListNexusEndpointsResponse
                     * @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)): temporal.api.operatorservice.v1.ListNexusEndpointsResponse;

                    /**
                     * Creates a ListNexusEndpointsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListNexusEndpointsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.operatorservice.v1.ListNexusEndpointsResponse;

                    /**
                     * Creates a plain object from a ListNexusEndpointsResponse message. Also converts values to other types if specified.
                     * @param message ListNexusEndpointsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.operatorservice.v1.ListNexusEndpointsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListNexusEndpointsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListNexusEndpointsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace cloud. */
        namespace cloud {

            /** Namespace cloudservice. */
            namespace cloudservice {

                /** Namespace v1. */
                namespace v1 {

                    /**
                     * WARNING: This service is currently experimental and may change in
                     * incompatible ways.
                     */
                    class CloudService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CloudService 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 CloudService 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): CloudService;

                        /**
                         * Gets all known users
                         * @param request GetUsersRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetUsersResponse
                         */
                        public getUsers(request: temporal.api.cloud.cloudservice.v1.IGetUsersRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetUsersCallback): void;

                        /**
                         * Gets all known users
                         * @param request GetUsersRequest message or plain object
                         * @returns Promise
                         */
                        public getUsers(request: temporal.api.cloud.cloudservice.v1.IGetUsersRequest): Promise<temporal.api.cloud.cloudservice.v1.GetUsersResponse>;

                        /**
                         * Get a user
                         * @param request GetUserRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetUserResponse
                         */
                        public getUser(request: temporal.api.cloud.cloudservice.v1.IGetUserRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetUserCallback): void;

                        /**
                         * Get a user
                         * @param request GetUserRequest message or plain object
                         * @returns Promise
                         */
                        public getUser(request: temporal.api.cloud.cloudservice.v1.IGetUserRequest): Promise<temporal.api.cloud.cloudservice.v1.GetUserResponse>;

                        /**
                         * Create a user
                         * @param request CreateUserRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateUserResponse
                         */
                        public createUser(request: temporal.api.cloud.cloudservice.v1.ICreateUserRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.CreateUserCallback): void;

                        /**
                         * Create a user
                         * @param request CreateUserRequest message or plain object
                         * @returns Promise
                         */
                        public createUser(request: temporal.api.cloud.cloudservice.v1.ICreateUserRequest): Promise<temporal.api.cloud.cloudservice.v1.CreateUserResponse>;

                        /**
                         * Update a user
                         * @param request UpdateUserRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UpdateUserResponse
                         */
                        public updateUser(request: temporal.api.cloud.cloudservice.v1.IUpdateUserRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.UpdateUserCallback): void;

                        /**
                         * Update a user
                         * @param request UpdateUserRequest message or plain object
                         * @returns Promise
                         */
                        public updateUser(request: temporal.api.cloud.cloudservice.v1.IUpdateUserRequest): Promise<temporal.api.cloud.cloudservice.v1.UpdateUserResponse>;

                        /**
                         * Delete a user
                         * @param request DeleteUserRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DeleteUserResponse
                         */
                        public deleteUser(request: temporal.api.cloud.cloudservice.v1.IDeleteUserRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.DeleteUserCallback): void;

                        /**
                         * Delete a user
                         * @param request DeleteUserRequest message or plain object
                         * @returns Promise
                         */
                        public deleteUser(request: temporal.api.cloud.cloudservice.v1.IDeleteUserRequest): Promise<temporal.api.cloud.cloudservice.v1.DeleteUserResponse>;

                        /**
                         * Set a user's access to a namespace
                         * @param request SetUserNamespaceAccessRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SetUserNamespaceAccessResponse
                         */
                        public setUserNamespaceAccess(request: temporal.api.cloud.cloudservice.v1.ISetUserNamespaceAccessRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.SetUserNamespaceAccessCallback): void;

                        /**
                         * Set a user's access to a namespace
                         * @param request SetUserNamespaceAccessRequest message or plain object
                         * @returns Promise
                         */
                        public setUserNamespaceAccess(request: temporal.api.cloud.cloudservice.v1.ISetUserNamespaceAccessRequest): Promise<temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessResponse>;

                        /**
                         * Get the latest information on an async operation
                         * @param request GetAsyncOperationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetAsyncOperationResponse
                         */
                        public getAsyncOperation(request: temporal.api.cloud.cloudservice.v1.IGetAsyncOperationRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetAsyncOperationCallback): void;

                        /**
                         * Get the latest information on an async operation
                         * @param request GetAsyncOperationRequest message or plain object
                         * @returns Promise
                         */
                        public getAsyncOperation(request: temporal.api.cloud.cloudservice.v1.IGetAsyncOperationRequest): Promise<temporal.api.cloud.cloudservice.v1.GetAsyncOperationResponse>;

                        /**
                         * Create a new namespace
                         * @param request CreateNamespaceRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateNamespaceResponse
                         */
                        public createNamespace(request: temporal.api.cloud.cloudservice.v1.ICreateNamespaceRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.CreateNamespaceCallback): void;

                        /**
                         * Create a new namespace
                         * @param request CreateNamespaceRequest message or plain object
                         * @returns Promise
                         */
                        public createNamespace(request: temporal.api.cloud.cloudservice.v1.ICreateNamespaceRequest): Promise<temporal.api.cloud.cloudservice.v1.CreateNamespaceResponse>;

                        /**
                         * Get all namespaces
                         * @param request GetNamespacesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetNamespacesResponse
                         */
                        public getNamespaces(request: temporal.api.cloud.cloudservice.v1.IGetNamespacesRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetNamespacesCallback): void;

                        /**
                         * Get all namespaces
                         * @param request GetNamespacesRequest message or plain object
                         * @returns Promise
                         */
                        public getNamespaces(request: temporal.api.cloud.cloudservice.v1.IGetNamespacesRequest): Promise<temporal.api.cloud.cloudservice.v1.GetNamespacesResponse>;

                        /**
                         * Get a namespace
                         * @param request GetNamespaceRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetNamespaceResponse
                         */
                        public getNamespace(request: temporal.api.cloud.cloudservice.v1.IGetNamespaceRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetNamespaceCallback): void;

                        /**
                         * Get a namespace
                         * @param request GetNamespaceRequest message or plain object
                         * @returns Promise
                         */
                        public getNamespace(request: temporal.api.cloud.cloudservice.v1.IGetNamespaceRequest): Promise<temporal.api.cloud.cloudservice.v1.GetNamespaceResponse>;

                        /**
                         * Update a namespace
                         * @param request UpdateNamespaceRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UpdateNamespaceResponse
                         */
                        public updateNamespace(request: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.UpdateNamespaceCallback): void;

                        /**
                         * Update a namespace
                         * @param request UpdateNamespaceRequest message or plain object
                         * @returns Promise
                         */
                        public updateNamespace(request: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceRequest): Promise<temporal.api.cloud.cloudservice.v1.UpdateNamespaceResponse>;

                        /**
                         * Rename an existing customer search attribute
                         * @param request RenameCustomSearchAttributeRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and RenameCustomSearchAttributeResponse
                         */
                        public renameCustomSearchAttribute(request: temporal.api.cloud.cloudservice.v1.IRenameCustomSearchAttributeRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.RenameCustomSearchAttributeCallback): void;

                        /**
                         * Rename an existing customer search attribute
                         * @param request RenameCustomSearchAttributeRequest message or plain object
                         * @returns Promise
                         */
                        public renameCustomSearchAttribute(request: temporal.api.cloud.cloudservice.v1.IRenameCustomSearchAttributeRequest): Promise<temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeResponse>;

                        /**
                         * Delete a namespace
                         * @param request DeleteNamespaceRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DeleteNamespaceResponse
                         */
                        public deleteNamespace(request: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.DeleteNamespaceCallback): void;

                        /**
                         * Delete a namespace
                         * @param request DeleteNamespaceRequest message or plain object
                         * @returns Promise
                         */
                        public deleteNamespace(request: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRequest): Promise<temporal.api.cloud.cloudservice.v1.DeleteNamespaceResponse>;

                        /**
                         * Failover a multi-region namespace
                         * @param request FailoverNamespaceRegionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and FailoverNamespaceRegionResponse
                         */
                        public failoverNamespaceRegion(request: temporal.api.cloud.cloudservice.v1.IFailoverNamespaceRegionRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.FailoverNamespaceRegionCallback): void;

                        /**
                         * Failover a multi-region namespace
                         * @param request FailoverNamespaceRegionRequest message or plain object
                         * @returns Promise
                         */
                        public failoverNamespaceRegion(request: temporal.api.cloud.cloudservice.v1.IFailoverNamespaceRegionRequest): Promise<temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionResponse>;

                        /**
                         * Add a new region to a namespace
                         * @param request AddNamespaceRegionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AddNamespaceRegionResponse
                         */
                        public addNamespaceRegion(request: temporal.api.cloud.cloudservice.v1.IAddNamespaceRegionRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.AddNamespaceRegionCallback): void;

                        /**
                         * Add a new region to a namespace
                         * @param request AddNamespaceRegionRequest message or plain object
                         * @returns Promise
                         */
                        public addNamespaceRegion(request: temporal.api.cloud.cloudservice.v1.IAddNamespaceRegionRequest): Promise<temporal.api.cloud.cloudservice.v1.AddNamespaceRegionResponse>;

                        /**
                         * Delete a region from a namespace
                         * @param request DeleteNamespaceRegionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DeleteNamespaceRegionResponse
                         */
                        public deleteNamespaceRegion(request: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRegionRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.DeleteNamespaceRegionCallback): void;

                        /**
                         * Delete a region from a namespace
                         * @param request DeleteNamespaceRegionRequest message or plain object
                         * @returns Promise
                         */
                        public deleteNamespaceRegion(request: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRegionRequest): Promise<temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionResponse>;

                        /**
                         * Get all regions
                         * @param request GetRegionsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetRegionsResponse
                         */
                        public getRegions(request: temporal.api.cloud.cloudservice.v1.IGetRegionsRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetRegionsCallback): void;

                        /**
                         * Get all regions
                         * @param request GetRegionsRequest message or plain object
                         * @returns Promise
                         */
                        public getRegions(request: temporal.api.cloud.cloudservice.v1.IGetRegionsRequest): Promise<temporal.api.cloud.cloudservice.v1.GetRegionsResponse>;

                        /**
                         * Get a region
                         * @param request GetRegionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetRegionResponse
                         */
                        public getRegion(request: temporal.api.cloud.cloudservice.v1.IGetRegionRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetRegionCallback): void;

                        /**
                         * Get a region
                         * @param request GetRegionRequest message or plain object
                         * @returns Promise
                         */
                        public getRegion(request: temporal.api.cloud.cloudservice.v1.IGetRegionRequest): Promise<temporal.api.cloud.cloudservice.v1.GetRegionResponse>;

                        /**
                         * Get all known API keys
                         * @param request GetApiKeysRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetApiKeysResponse
                         */
                        public getApiKeys(request: temporal.api.cloud.cloudservice.v1.IGetApiKeysRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetApiKeysCallback): void;

                        /**
                         * Get all known API keys
                         * @param request GetApiKeysRequest message or plain object
                         * @returns Promise
                         */
                        public getApiKeys(request: temporal.api.cloud.cloudservice.v1.IGetApiKeysRequest): Promise<temporal.api.cloud.cloudservice.v1.GetApiKeysResponse>;

                        /**
                         * Get an API key
                         * @param request GetApiKeyRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetApiKeyResponse
                         */
                        public getApiKey(request: temporal.api.cloud.cloudservice.v1.IGetApiKeyRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetApiKeyCallback): void;

                        /**
                         * Get an API key
                         * @param request GetApiKeyRequest message or plain object
                         * @returns Promise
                         */
                        public getApiKey(request: temporal.api.cloud.cloudservice.v1.IGetApiKeyRequest): Promise<temporal.api.cloud.cloudservice.v1.GetApiKeyResponse>;

                        /**
                         * Create an API key
                         * @param request CreateApiKeyRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateApiKeyResponse
                         */
                        public createApiKey(request: temporal.api.cloud.cloudservice.v1.ICreateApiKeyRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.CreateApiKeyCallback): void;

                        /**
                         * Create an API key
                         * @param request CreateApiKeyRequest message or plain object
                         * @returns Promise
                         */
                        public createApiKey(request: temporal.api.cloud.cloudservice.v1.ICreateApiKeyRequest): Promise<temporal.api.cloud.cloudservice.v1.CreateApiKeyResponse>;

                        /**
                         * Update an API key
                         * @param request UpdateApiKeyRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UpdateApiKeyResponse
                         */
                        public updateApiKey(request: temporal.api.cloud.cloudservice.v1.IUpdateApiKeyRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.UpdateApiKeyCallback): void;

                        /**
                         * Update an API key
                         * @param request UpdateApiKeyRequest message or plain object
                         * @returns Promise
                         */
                        public updateApiKey(request: temporal.api.cloud.cloudservice.v1.IUpdateApiKeyRequest): Promise<temporal.api.cloud.cloudservice.v1.UpdateApiKeyResponse>;

                        /**
                         * Delete an API key
                         * @param request DeleteApiKeyRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DeleteApiKeyResponse
                         */
                        public deleteApiKey(request: temporal.api.cloud.cloudservice.v1.IDeleteApiKeyRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.DeleteApiKeyCallback): void;

                        /**
                         * Delete an API key
                         * @param request DeleteApiKeyRequest message or plain object
                         * @returns Promise
                         */
                        public deleteApiKey(request: temporal.api.cloud.cloudservice.v1.IDeleteApiKeyRequest): Promise<temporal.api.cloud.cloudservice.v1.DeleteApiKeyResponse>;

                        /**
                         * Gets nexus endpoints
                         * @param request GetNexusEndpointsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetNexusEndpointsResponse
                         */
                        public getNexusEndpoints(request: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointsRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetNexusEndpointsCallback): void;

                        /**
                         * Gets nexus endpoints
                         * @param request GetNexusEndpointsRequest message or plain object
                         * @returns Promise
                         */
                        public getNexusEndpoints(request: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointsRequest): Promise<temporal.api.cloud.cloudservice.v1.GetNexusEndpointsResponse>;

                        /**
                         * Get a nexus endpoint
                         * @param request GetNexusEndpointRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetNexusEndpointResponse
                         */
                        public getNexusEndpoint(request: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetNexusEndpointCallback): void;

                        /**
                         * Get a nexus endpoint
                         * @param request GetNexusEndpointRequest message or plain object
                         * @returns Promise
                         */
                        public getNexusEndpoint(request: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointRequest): Promise<temporal.api.cloud.cloudservice.v1.GetNexusEndpointResponse>;

                        /**
                         * Create a nexus endpoint
                         * @param request CreateNexusEndpointRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateNexusEndpointResponse
                         */
                        public createNexusEndpoint(request: temporal.api.cloud.cloudservice.v1.ICreateNexusEndpointRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.CreateNexusEndpointCallback): void;

                        /**
                         * Create a nexus endpoint
                         * @param request CreateNexusEndpointRequest message or plain object
                         * @returns Promise
                         */
                        public createNexusEndpoint(request: temporal.api.cloud.cloudservice.v1.ICreateNexusEndpointRequest): Promise<temporal.api.cloud.cloudservice.v1.CreateNexusEndpointResponse>;

                        /**
                         * Update a nexus endpoint
                         * @param request UpdateNexusEndpointRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UpdateNexusEndpointResponse
                         */
                        public updateNexusEndpoint(request: temporal.api.cloud.cloudservice.v1.IUpdateNexusEndpointRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.UpdateNexusEndpointCallback): void;

                        /**
                         * Update a nexus endpoint
                         * @param request UpdateNexusEndpointRequest message or plain object
                         * @returns Promise
                         */
                        public updateNexusEndpoint(request: temporal.api.cloud.cloudservice.v1.IUpdateNexusEndpointRequest): Promise<temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointResponse>;

                        /**
                         * Delete a nexus endpoint
                         * @param request DeleteNexusEndpointRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DeleteNexusEndpointResponse
                         */
                        public deleteNexusEndpoint(request: temporal.api.cloud.cloudservice.v1.IDeleteNexusEndpointRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.DeleteNexusEndpointCallback): void;

                        /**
                         * Delete a nexus endpoint
                         * @param request DeleteNexusEndpointRequest message or plain object
                         * @returns Promise
                         */
                        public deleteNexusEndpoint(request: temporal.api.cloud.cloudservice.v1.IDeleteNexusEndpointRequest): Promise<temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointResponse>;

                        /**
                         * Get all user groups
                         * @param request GetUserGroupsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetUserGroupsResponse
                         */
                        public getUserGroups(request: temporal.api.cloud.cloudservice.v1.IGetUserGroupsRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetUserGroupsCallback): void;

                        /**
                         * Get all user groups
                         * @param request GetUserGroupsRequest message or plain object
                         * @returns Promise
                         */
                        public getUserGroups(request: temporal.api.cloud.cloudservice.v1.IGetUserGroupsRequest): Promise<temporal.api.cloud.cloudservice.v1.GetUserGroupsResponse>;

                        /**
                         * Get a user group
                         * @param request GetUserGroupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetUserGroupResponse
                         */
                        public getUserGroup(request: temporal.api.cloud.cloudservice.v1.IGetUserGroupRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetUserGroupCallback): void;

                        /**
                         * Get a user group
                         * @param request GetUserGroupRequest message or plain object
                         * @returns Promise
                         */
                        public getUserGroup(request: temporal.api.cloud.cloudservice.v1.IGetUserGroupRequest): Promise<temporal.api.cloud.cloudservice.v1.GetUserGroupResponse>;

                        /**
                         * Create new a user group
                         * @param request CreateUserGroupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateUserGroupResponse
                         */
                        public createUserGroup(request: temporal.api.cloud.cloudservice.v1.ICreateUserGroupRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.CreateUserGroupCallback): void;

                        /**
                         * Create new a user group
                         * @param request CreateUserGroupRequest message or plain object
                         * @returns Promise
                         */
                        public createUserGroup(request: temporal.api.cloud.cloudservice.v1.ICreateUserGroupRequest): Promise<temporal.api.cloud.cloudservice.v1.CreateUserGroupResponse>;

                        /**
                         * Update a user group
                         * @param request UpdateUserGroupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UpdateUserGroupResponse
                         */
                        public updateUserGroup(request: temporal.api.cloud.cloudservice.v1.IUpdateUserGroupRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.UpdateUserGroupCallback): void;

                        /**
                         * Update a user group
                         * @param request UpdateUserGroupRequest message or plain object
                         * @returns Promise
                         */
                        public updateUserGroup(request: temporal.api.cloud.cloudservice.v1.IUpdateUserGroupRequest): Promise<temporal.api.cloud.cloudservice.v1.UpdateUserGroupResponse>;

                        /**
                         * Delete a user group
                         * @param request DeleteUserGroupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DeleteUserGroupResponse
                         */
                        public deleteUserGroup(request: temporal.api.cloud.cloudservice.v1.IDeleteUserGroupRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.DeleteUserGroupCallback): void;

                        /**
                         * Delete a user group
                         * @param request DeleteUserGroupRequest message or plain object
                         * @returns Promise
                         */
                        public deleteUserGroup(request: temporal.api.cloud.cloudservice.v1.IDeleteUserGroupRequest): Promise<temporal.api.cloud.cloudservice.v1.DeleteUserGroupResponse>;

                        /**
                         * Set a user group's access to a namespace
                         * @param request SetUserGroupNamespaceAccessRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SetUserGroupNamespaceAccessResponse
                         */
                        public setUserGroupNamespaceAccess(request: temporal.api.cloud.cloudservice.v1.ISetUserGroupNamespaceAccessRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.SetUserGroupNamespaceAccessCallback): void;

                        /**
                         * Set a user group's access to a namespace
                         * @param request SetUserGroupNamespaceAccessRequest message or plain object
                         * @returns Promise
                         */
                        public setUserGroupNamespaceAccess(request: temporal.api.cloud.cloudservice.v1.ISetUserGroupNamespaceAccessRequest): Promise<temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessResponse>;

                        /**
                         * Add a member to the group, can only be used with Cloud group types.
                         * @param request AddUserGroupMemberRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AddUserGroupMemberResponse
                         */
                        public addUserGroupMember(request: temporal.api.cloud.cloudservice.v1.IAddUserGroupMemberRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.AddUserGroupMemberCallback): void;

                        /**
                         * Add a member to the group, can only be used with Cloud group types.
                         * @param request AddUserGroupMemberRequest message or plain object
                         * @returns Promise
                         */
                        public addUserGroupMember(request: temporal.api.cloud.cloudservice.v1.IAddUserGroupMemberRequest): Promise<temporal.api.cloud.cloudservice.v1.AddUserGroupMemberResponse>;

                        /**
                         * Remove a member from the group, can only be used with Cloud group types.
                         * @param request RemoveUserGroupMemberRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and RemoveUserGroupMemberResponse
                         */
                        public removeUserGroupMember(request: temporal.api.cloud.cloudservice.v1.IRemoveUserGroupMemberRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.RemoveUserGroupMemberCallback): void;

                        /**
                         * Remove a member from the group, can only be used with Cloud group types.
                         * @param request RemoveUserGroupMemberRequest message or plain object
                         * @returns Promise
                         */
                        public removeUserGroupMember(request: temporal.api.cloud.cloudservice.v1.IRemoveUserGroupMemberRequest): Promise<temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberResponse>;

                        /**
                         * Calls GetUserGroupMembers.
                         * @param request GetUserGroupMembersRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetUserGroupMembersResponse
                         */
                        public getUserGroupMembers(request: temporal.api.cloud.cloudservice.v1.IGetUserGroupMembersRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetUserGroupMembersCallback): void;

                        /**
                         * Calls GetUserGroupMembers.
                         * @param request GetUserGroupMembersRequest message or plain object
                         * @returns Promise
                         */
                        public getUserGroupMembers(request: temporal.api.cloud.cloudservice.v1.IGetUserGroupMembersRequest): Promise<temporal.api.cloud.cloudservice.v1.GetUserGroupMembersResponse>;

                        /**
                         * Create a service account.
                         * @param request CreateServiceAccountRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateServiceAccountResponse
                         */
                        public createServiceAccount(request: temporal.api.cloud.cloudservice.v1.ICreateServiceAccountRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.CreateServiceAccountCallback): void;

                        /**
                         * Create a service account.
                         * @param request CreateServiceAccountRequest message or plain object
                         * @returns Promise
                         */
                        public createServiceAccount(request: temporal.api.cloud.cloudservice.v1.ICreateServiceAccountRequest): Promise<temporal.api.cloud.cloudservice.v1.CreateServiceAccountResponse>;

                        /**
                         * Get a service account.
                         * @param request GetServiceAccountRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetServiceAccountResponse
                         */
                        public getServiceAccount(request: temporal.api.cloud.cloudservice.v1.IGetServiceAccountRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetServiceAccountCallback): void;

                        /**
                         * Get a service account.
                         * @param request GetServiceAccountRequest message or plain object
                         * @returns Promise
                         */
                        public getServiceAccount(request: temporal.api.cloud.cloudservice.v1.IGetServiceAccountRequest): Promise<temporal.api.cloud.cloudservice.v1.GetServiceAccountResponse>;

                        /**
                         * Get service accounts.
                         * @param request GetServiceAccountsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetServiceAccountsResponse
                         */
                        public getServiceAccounts(request: temporal.api.cloud.cloudservice.v1.IGetServiceAccountsRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetServiceAccountsCallback): void;

                        /**
                         * Get service accounts.
                         * @param request GetServiceAccountsRequest message or plain object
                         * @returns Promise
                         */
                        public getServiceAccounts(request: temporal.api.cloud.cloudservice.v1.IGetServiceAccountsRequest): Promise<temporal.api.cloud.cloudservice.v1.GetServiceAccountsResponse>;

                        /**
                         * Update a service account.
                         * @param request UpdateServiceAccountRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UpdateServiceAccountResponse
                         */
                        public updateServiceAccount(request: temporal.api.cloud.cloudservice.v1.IUpdateServiceAccountRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.UpdateServiceAccountCallback): void;

                        /**
                         * Update a service account.
                         * @param request UpdateServiceAccountRequest message or plain object
                         * @returns Promise
                         */
                        public updateServiceAccount(request: temporal.api.cloud.cloudservice.v1.IUpdateServiceAccountRequest): Promise<temporal.api.cloud.cloudservice.v1.UpdateServiceAccountResponse>;

                        /**
                         * Set a service account's access to a namespace.
                         * @param request SetServiceAccountNamespaceAccessRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SetServiceAccountNamespaceAccessResponse
                         */
                        public setServiceAccountNamespaceAccess(request: temporal.api.cloud.cloudservice.v1.ISetServiceAccountNamespaceAccessRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.SetServiceAccountNamespaceAccessCallback): void;

                        /**
                         * Set a service account's access to a namespace.
                         * @param request SetServiceAccountNamespaceAccessRequest message or plain object
                         * @returns Promise
                         */
                        public setServiceAccountNamespaceAccess(request: temporal.api.cloud.cloudservice.v1.ISetServiceAccountNamespaceAccessRequest): Promise<temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessResponse>;

                        /**
                         * Delete a service account.
                         * @param request DeleteServiceAccountRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DeleteServiceAccountResponse
                         */
                        public deleteServiceAccount(request: temporal.api.cloud.cloudservice.v1.IDeleteServiceAccountRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.DeleteServiceAccountCallback): void;

                        /**
                         * Delete a service account.
                         * @param request DeleteServiceAccountRequest message or plain object
                         * @returns Promise
                         */
                        public deleteServiceAccount(request: temporal.api.cloud.cloudservice.v1.IDeleteServiceAccountRequest): Promise<temporal.api.cloud.cloudservice.v1.DeleteServiceAccountResponse>;

                        /**
                         * WARNING: Pre-Release Feature
                         * Get usage data across namespaces
                         * @param request GetUsageRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetUsageResponse
                         */
                        public getUsage(request: temporal.api.cloud.cloudservice.v1.IGetUsageRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetUsageCallback): void;

                        /**
                         * WARNING: Pre-Release Feature
                         * Get usage data across namespaces
                         * @param request GetUsageRequest message or plain object
                         * @returns Promise
                         */
                        public getUsage(request: temporal.api.cloud.cloudservice.v1.IGetUsageRequest): Promise<temporal.api.cloud.cloudservice.v1.GetUsageResponse>;

                        /**
                         * Get account information.
                         * @param request GetAccountRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetAccountResponse
                         */
                        public getAccount(request: temporal.api.cloud.cloudservice.v1.IGetAccountRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetAccountCallback): void;

                        /**
                         * Get account information.
                         * @param request GetAccountRequest message or plain object
                         * @returns Promise
                         */
                        public getAccount(request: temporal.api.cloud.cloudservice.v1.IGetAccountRequest): Promise<temporal.api.cloud.cloudservice.v1.GetAccountResponse>;

                        /**
                         * Update account information.
                         * @param request UpdateAccountRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UpdateAccountResponse
                         */
                        public updateAccount(request: temporal.api.cloud.cloudservice.v1.IUpdateAccountRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.UpdateAccountCallback): void;

                        /**
                         * Update account information.
                         * @param request UpdateAccountRequest message or plain object
                         * @returns Promise
                         */
                        public updateAccount(request: temporal.api.cloud.cloudservice.v1.IUpdateAccountRequest): Promise<temporal.api.cloud.cloudservice.v1.UpdateAccountResponse>;

                        /**
                         * Create an export sink
                         * @param request CreateNamespaceExportSinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateNamespaceExportSinkResponse
                         */
                        public createNamespaceExportSink(request: temporal.api.cloud.cloudservice.v1.ICreateNamespaceExportSinkRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.CreateNamespaceExportSinkCallback): void;

                        /**
                         * Create an export sink
                         * @param request CreateNamespaceExportSinkRequest message or plain object
                         * @returns Promise
                         */
                        public createNamespaceExportSink(request: temporal.api.cloud.cloudservice.v1.ICreateNamespaceExportSinkRequest): Promise<temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkResponse>;

                        /**
                         * Get an export sink
                         * @param request GetNamespaceExportSinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetNamespaceExportSinkResponse
                         */
                        public getNamespaceExportSink(request: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinkRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetNamespaceExportSinkCallback): void;

                        /**
                         * Get an export sink
                         * @param request GetNamespaceExportSinkRequest message or plain object
                         * @returns Promise
                         */
                        public getNamespaceExportSink(request: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinkRequest): Promise<temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkResponse>;

                        /**
                         * Get export sinks
                         * @param request GetNamespaceExportSinksRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetNamespaceExportSinksResponse
                         */
                        public getNamespaceExportSinks(request: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinksRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetNamespaceExportSinksCallback): void;

                        /**
                         * Get export sinks
                         * @param request GetNamespaceExportSinksRequest message or plain object
                         * @returns Promise
                         */
                        public getNamespaceExportSinks(request: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinksRequest): Promise<temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksResponse>;

                        /**
                         * Update an export sink
                         * @param request UpdateNamespaceExportSinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UpdateNamespaceExportSinkResponse
                         */
                        public updateNamespaceExportSink(request: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceExportSinkRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.UpdateNamespaceExportSinkCallback): void;

                        /**
                         * Update an export sink
                         * @param request UpdateNamespaceExportSinkRequest message or plain object
                         * @returns Promise
                         */
                        public updateNamespaceExportSink(request: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceExportSinkRequest): Promise<temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkResponse>;

                        /**
                         * Delete an export sink
                         * @param request DeleteNamespaceExportSinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DeleteNamespaceExportSinkResponse
                         */
                        public deleteNamespaceExportSink(request: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceExportSinkRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.DeleteNamespaceExportSinkCallback): void;

                        /**
                         * Delete an export sink
                         * @param request DeleteNamespaceExportSinkRequest message or plain object
                         * @returns Promise
                         */
                        public deleteNamespaceExportSink(request: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceExportSinkRequest): Promise<temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkResponse>;

                        /**
                         * Validates an export sink configuration by delivering an empty test file to the specified sink.
                         * This operation verifies that the sink is correctly configured, accessible, and ready for data export.
                         * @param request ValidateNamespaceExportSinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ValidateNamespaceExportSinkResponse
                         */
                        public validateNamespaceExportSink(request: temporal.api.cloud.cloudservice.v1.IValidateNamespaceExportSinkRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.ValidateNamespaceExportSinkCallback): void;

                        /**
                         * Validates an export sink configuration by delivering an empty test file to the specified sink.
                         * This operation verifies that the sink is correctly configured, accessible, and ready for data export.
                         * @param request ValidateNamespaceExportSinkRequest message or plain object
                         * @returns Promise
                         */
                        public validateNamespaceExportSink(request: temporal.api.cloud.cloudservice.v1.IValidateNamespaceExportSinkRequest): Promise<temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkResponse>;

                        /**
                         * Update the tags for a namespace
                         * @param request UpdateNamespaceTagsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UpdateNamespaceTagsResponse
                         */
                        public updateNamespaceTags(request: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceTagsRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.UpdateNamespaceTagsCallback): void;

                        /**
                         * Update the tags for a namespace
                         * @param request UpdateNamespaceTagsRequest message or plain object
                         * @returns Promise
                         */
                        public updateNamespaceTags(request: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceTagsRequest): Promise<temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsResponse>;

                        /**
                         * Creates a connectivity rule
                         * @param request CreateConnectivityRuleRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CreateConnectivityRuleResponse
                         */
                        public createConnectivityRule(request: temporal.api.cloud.cloudservice.v1.ICreateConnectivityRuleRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.CreateConnectivityRuleCallback): void;

                        /**
                         * Creates a connectivity rule
                         * @param request CreateConnectivityRuleRequest message or plain object
                         * @returns Promise
                         */
                        public createConnectivityRule(request: temporal.api.cloud.cloudservice.v1.ICreateConnectivityRuleRequest): Promise<temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleResponse>;

                        /**
                         * Gets a connectivity rule by id
                         * @param request GetConnectivityRuleRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetConnectivityRuleResponse
                         */
                        public getConnectivityRule(request: temporal.api.cloud.cloudservice.v1.IGetConnectivityRuleRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetConnectivityRuleCallback): void;

                        /**
                         * Gets a connectivity rule by id
                         * @param request GetConnectivityRuleRequest message or plain object
                         * @returns Promise
                         */
                        public getConnectivityRule(request: temporal.api.cloud.cloudservice.v1.IGetConnectivityRuleRequest): Promise<temporal.api.cloud.cloudservice.v1.GetConnectivityRuleResponse>;

                        /**
                         * Lists connectivity rules by account
                         * @param request GetConnectivityRulesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetConnectivityRulesResponse
                         */
                        public getConnectivityRules(request: temporal.api.cloud.cloudservice.v1.IGetConnectivityRulesRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.GetConnectivityRulesCallback): void;

                        /**
                         * Lists connectivity rules by account
                         * @param request GetConnectivityRulesRequest message or plain object
                         * @returns Promise
                         */
                        public getConnectivityRules(request: temporal.api.cloud.cloudservice.v1.IGetConnectivityRulesRequest): Promise<temporal.api.cloud.cloudservice.v1.GetConnectivityRulesResponse>;

                        /**
                         * Deletes a connectivity rule by id
                         * @param request DeleteConnectivityRuleRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DeleteConnectivityRuleResponse
                         */
                        public deleteConnectivityRule(request: temporal.api.cloud.cloudservice.v1.IDeleteConnectivityRuleRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.DeleteConnectivityRuleCallback): void;

                        /**
                         * Deletes a connectivity rule by id
                         * @param request DeleteConnectivityRuleRequest message or plain object
                         * @returns Promise
                         */
                        public deleteConnectivityRule(request: temporal.api.cloud.cloudservice.v1.IDeleteConnectivityRuleRequest): Promise<temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleResponse>;

                        /**
                         * Validate customer audit log sink is accessible from Temporal's workflow by delivering an empty file to the specified sink.
                         * The operation verifies that the sink is correctly configured, accessible and ready to receive audit logs.
                         * @param request ValidateAccountAuditLogSinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ValidateAccountAuditLogSinkResponse
                         */
                        public validateAccountAuditLogSink(request: temporal.api.cloud.cloudservice.v1.IValidateAccountAuditLogSinkRequest, callback: temporal.api.cloud.cloudservice.v1.CloudService.ValidateAccountAuditLogSinkCallback): void;

                        /**
                         * Validate customer audit log sink is accessible from Temporal's workflow by delivering an empty file to the specified sink.
                         * The operation verifies that the sink is correctly configured, accessible and ready to receive audit logs.
                         * @param request ValidateAccountAuditLogSinkRequest message or plain object
                         * @returns Promise
                         */
                        public validateAccountAuditLogSink(request: temporal.api.cloud.cloudservice.v1.IValidateAccountAuditLogSinkRequest): Promise<temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkResponse>;
                    }

                    namespace CloudService {

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getUsers}.
                         * @param error Error, if any
                         * @param [response] GetUsersResponse
                         */
                        type GetUsersCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetUsersResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getUser}.
                         * @param error Error, if any
                         * @param [response] GetUserResponse
                         */
                        type GetUserCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetUserResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#createUser}.
                         * @param error Error, if any
                         * @param [response] CreateUserResponse
                         */
                        type CreateUserCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.CreateUserResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#updateUser}.
                         * @param error Error, if any
                         * @param [response] UpdateUserResponse
                         */
                        type UpdateUserCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.UpdateUserResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#deleteUser}.
                         * @param error Error, if any
                         * @param [response] DeleteUserResponse
                         */
                        type DeleteUserCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.DeleteUserResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#setUserNamespaceAccess}.
                         * @param error Error, if any
                         * @param [response] SetUserNamespaceAccessResponse
                         */
                        type SetUserNamespaceAccessCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getAsyncOperation}.
                         * @param error Error, if any
                         * @param [response] GetAsyncOperationResponse
                         */
                        type GetAsyncOperationCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetAsyncOperationResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#createNamespace}.
                         * @param error Error, if any
                         * @param [response] CreateNamespaceResponse
                         */
                        type CreateNamespaceCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.CreateNamespaceResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getNamespaces}.
                         * @param error Error, if any
                         * @param [response] GetNamespacesResponse
                         */
                        type GetNamespacesCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetNamespacesResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getNamespace}.
                         * @param error Error, if any
                         * @param [response] GetNamespaceResponse
                         */
                        type GetNamespaceCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetNamespaceResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#updateNamespace}.
                         * @param error Error, if any
                         * @param [response] UpdateNamespaceResponse
                         */
                        type UpdateNamespaceCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.UpdateNamespaceResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#renameCustomSearchAttribute}.
                         * @param error Error, if any
                         * @param [response] RenameCustomSearchAttributeResponse
                         */
                        type RenameCustomSearchAttributeCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#deleteNamespace}.
                         * @param error Error, if any
                         * @param [response] DeleteNamespaceResponse
                         */
                        type DeleteNamespaceCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.DeleteNamespaceResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#failoverNamespaceRegion}.
                         * @param error Error, if any
                         * @param [response] FailoverNamespaceRegionResponse
                         */
                        type FailoverNamespaceRegionCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#addNamespaceRegion}.
                         * @param error Error, if any
                         * @param [response] AddNamespaceRegionResponse
                         */
                        type AddNamespaceRegionCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.AddNamespaceRegionResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#deleteNamespaceRegion}.
                         * @param error Error, if any
                         * @param [response] DeleteNamespaceRegionResponse
                         */
                        type DeleteNamespaceRegionCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getRegions}.
                         * @param error Error, if any
                         * @param [response] GetRegionsResponse
                         */
                        type GetRegionsCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetRegionsResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getRegion}.
                         * @param error Error, if any
                         * @param [response] GetRegionResponse
                         */
                        type GetRegionCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetRegionResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getApiKeys}.
                         * @param error Error, if any
                         * @param [response] GetApiKeysResponse
                         */
                        type GetApiKeysCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetApiKeysResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getApiKey}.
                         * @param error Error, if any
                         * @param [response] GetApiKeyResponse
                         */
                        type GetApiKeyCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetApiKeyResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#createApiKey}.
                         * @param error Error, if any
                         * @param [response] CreateApiKeyResponse
                         */
                        type CreateApiKeyCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.CreateApiKeyResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#updateApiKey}.
                         * @param error Error, if any
                         * @param [response] UpdateApiKeyResponse
                         */
                        type UpdateApiKeyCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.UpdateApiKeyResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#deleteApiKey}.
                         * @param error Error, if any
                         * @param [response] DeleteApiKeyResponse
                         */
                        type DeleteApiKeyCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.DeleteApiKeyResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getNexusEndpoints}.
                         * @param error Error, if any
                         * @param [response] GetNexusEndpointsResponse
                         */
                        type GetNexusEndpointsCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetNexusEndpointsResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getNexusEndpoint}.
                         * @param error Error, if any
                         * @param [response] GetNexusEndpointResponse
                         */
                        type GetNexusEndpointCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetNexusEndpointResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#createNexusEndpoint}.
                         * @param error Error, if any
                         * @param [response] CreateNexusEndpointResponse
                         */
                        type CreateNexusEndpointCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.CreateNexusEndpointResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#updateNexusEndpoint}.
                         * @param error Error, if any
                         * @param [response] UpdateNexusEndpointResponse
                         */
                        type UpdateNexusEndpointCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#deleteNexusEndpoint}.
                         * @param error Error, if any
                         * @param [response] DeleteNexusEndpointResponse
                         */
                        type DeleteNexusEndpointCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getUserGroups}.
                         * @param error Error, if any
                         * @param [response] GetUserGroupsResponse
                         */
                        type GetUserGroupsCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetUserGroupsResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getUserGroup}.
                         * @param error Error, if any
                         * @param [response] GetUserGroupResponse
                         */
                        type GetUserGroupCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetUserGroupResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#createUserGroup}.
                         * @param error Error, if any
                         * @param [response] CreateUserGroupResponse
                         */
                        type CreateUserGroupCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.CreateUserGroupResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#updateUserGroup}.
                         * @param error Error, if any
                         * @param [response] UpdateUserGroupResponse
                         */
                        type UpdateUserGroupCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.UpdateUserGroupResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#deleteUserGroup}.
                         * @param error Error, if any
                         * @param [response] DeleteUserGroupResponse
                         */
                        type DeleteUserGroupCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.DeleteUserGroupResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#setUserGroupNamespaceAccess}.
                         * @param error Error, if any
                         * @param [response] SetUserGroupNamespaceAccessResponse
                         */
                        type SetUserGroupNamespaceAccessCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#addUserGroupMember}.
                         * @param error Error, if any
                         * @param [response] AddUserGroupMemberResponse
                         */
                        type AddUserGroupMemberCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.AddUserGroupMemberResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#removeUserGroupMember}.
                         * @param error Error, if any
                         * @param [response] RemoveUserGroupMemberResponse
                         */
                        type RemoveUserGroupMemberCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getUserGroupMembers}.
                         * @param error Error, if any
                         * @param [response] GetUserGroupMembersResponse
                         */
                        type GetUserGroupMembersCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetUserGroupMembersResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#createServiceAccount}.
                         * @param error Error, if any
                         * @param [response] CreateServiceAccountResponse
                         */
                        type CreateServiceAccountCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.CreateServiceAccountResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getServiceAccount}.
                         * @param error Error, if any
                         * @param [response] GetServiceAccountResponse
                         */
                        type GetServiceAccountCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetServiceAccountResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getServiceAccounts}.
                         * @param error Error, if any
                         * @param [response] GetServiceAccountsResponse
                         */
                        type GetServiceAccountsCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetServiceAccountsResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#updateServiceAccount}.
                         * @param error Error, if any
                         * @param [response] UpdateServiceAccountResponse
                         */
                        type UpdateServiceAccountCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.UpdateServiceAccountResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#setServiceAccountNamespaceAccess}.
                         * @param error Error, if any
                         * @param [response] SetServiceAccountNamespaceAccessResponse
                         */
                        type SetServiceAccountNamespaceAccessCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#deleteServiceAccount}.
                         * @param error Error, if any
                         * @param [response] DeleteServiceAccountResponse
                         */
                        type DeleteServiceAccountCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.DeleteServiceAccountResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getUsage}.
                         * @param error Error, if any
                         * @param [response] GetUsageResponse
                         */
                        type GetUsageCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetUsageResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getAccount}.
                         * @param error Error, if any
                         * @param [response] GetAccountResponse
                         */
                        type GetAccountCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetAccountResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#updateAccount}.
                         * @param error Error, if any
                         * @param [response] UpdateAccountResponse
                         */
                        type UpdateAccountCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.UpdateAccountResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#createNamespaceExportSink}.
                         * @param error Error, if any
                         * @param [response] CreateNamespaceExportSinkResponse
                         */
                        type CreateNamespaceExportSinkCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getNamespaceExportSink}.
                         * @param error Error, if any
                         * @param [response] GetNamespaceExportSinkResponse
                         */
                        type GetNamespaceExportSinkCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getNamespaceExportSinks}.
                         * @param error Error, if any
                         * @param [response] GetNamespaceExportSinksResponse
                         */
                        type GetNamespaceExportSinksCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#updateNamespaceExportSink}.
                         * @param error Error, if any
                         * @param [response] UpdateNamespaceExportSinkResponse
                         */
                        type UpdateNamespaceExportSinkCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#deleteNamespaceExportSink}.
                         * @param error Error, if any
                         * @param [response] DeleteNamespaceExportSinkResponse
                         */
                        type DeleteNamespaceExportSinkCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#validateNamespaceExportSink}.
                         * @param error Error, if any
                         * @param [response] ValidateNamespaceExportSinkResponse
                         */
                        type ValidateNamespaceExportSinkCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#updateNamespaceTags}.
                         * @param error Error, if any
                         * @param [response] UpdateNamespaceTagsResponse
                         */
                        type UpdateNamespaceTagsCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#createConnectivityRule}.
                         * @param error Error, if any
                         * @param [response] CreateConnectivityRuleResponse
                         */
                        type CreateConnectivityRuleCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getConnectivityRule}.
                         * @param error Error, if any
                         * @param [response] GetConnectivityRuleResponse
                         */
                        type GetConnectivityRuleCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetConnectivityRuleResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#getConnectivityRules}.
                         * @param error Error, if any
                         * @param [response] GetConnectivityRulesResponse
                         */
                        type GetConnectivityRulesCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.GetConnectivityRulesResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#deleteConnectivityRule}.
                         * @param error Error, if any
                         * @param [response] DeleteConnectivityRuleResponse
                         */
                        type DeleteConnectivityRuleCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleResponse) => void;

                        /**
                         * Callback as used by {@link temporal.api.cloud.cloudservice.v1.CloudService#validateAccountAuditLogSink}.
                         * @param error Error, if any
                         * @param [response] ValidateAccountAuditLogSinkResponse
                         */
                        type ValidateAccountAuditLogSinkCallback = (error: (Error|null), response?: temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkResponse) => void;
                    }

                    /** Properties of a GetUsersRequest. */
                    interface IGetUsersRequest {

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        pageSize?: (number|null);

                        /** The page token if this is continuing from another response - optional. */
                        pageToken?: (string|null);

                        /** Filter users by email address - optional. */
                        email?: (string|null);

                        /** Filter users by the namespace they have access to - optional. */
                        namespace?: (string|null);
                    }

                    /** Represents a GetUsersRequest. */
                    class GetUsersRequest implements IGetUsersRequest {

                        /**
                         * Constructs a new GetUsersRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUsersRequest);

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        public pageSize: number;

                        /** The page token if this is continuing from another response - optional. */
                        public pageToken: string;

                        /** Filter users by email address - optional. */
                        public email: string;

                        /** Filter users by the namespace they have access to - optional. */
                        public namespace: string;

                        /**
                         * Creates a new GetUsersRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUsersRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUsersRequest): temporal.api.cloud.cloudservice.v1.GetUsersRequest;

                        /**
                         * Encodes the specified GetUsersRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUsersRequest.verify|verify} messages.
                         * @param message GetUsersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUsersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUsersRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUsersRequest.verify|verify} messages.
                         * @param message GetUsersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUsersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUsersRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUsersRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetUsersRequest;

                        /**
                         * Decodes a GetUsersRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUsersRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUsersRequest;

                        /**
                         * Creates a GetUsersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUsersRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUsersRequest;

                        /**
                         * Creates a plain object from a GetUsersRequest message. Also converts values to other types if specified.
                         * @param message GetUsersRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUsersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUsersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUsersRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetUsersResponse. */
                    interface IGetUsersResponse {

                        /** The list of users in ascending ids order */
                        users?: (temporal.api.cloud.identity.v1.IUser[]|null);

                        /** The next page's token */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a GetUsersResponse. */
                    class GetUsersResponse implements IGetUsersResponse {

                        /**
                         * Constructs a new GetUsersResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUsersResponse);

                        /** The list of users in ascending ids order */
                        public users: temporal.api.cloud.identity.v1.IUser[];

                        /** The next page's token */
                        public nextPageToken: string;

                        /**
                         * Creates a new GetUsersResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUsersResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUsersResponse): temporal.api.cloud.cloudservice.v1.GetUsersResponse;

                        /**
                         * Encodes the specified GetUsersResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUsersResponse.verify|verify} messages.
                         * @param message GetUsersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUsersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUsersResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUsersResponse.verify|verify} messages.
                         * @param message GetUsersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUsersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUsersResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUsersResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetUsersResponse;

                        /**
                         * Decodes a GetUsersResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUsersResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUsersResponse;

                        /**
                         * Creates a GetUsersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUsersResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUsersResponse;

                        /**
                         * Creates a plain object from a GetUsersResponse message. Also converts values to other types if specified.
                         * @param message GetUsersResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUsersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUsersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUsersResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetUserRequest. */
                    interface IGetUserRequest {

                        /** The id of the user to get */
                        userId?: (string|null);
                    }

                    /** Represents a GetUserRequest. */
                    class GetUserRequest implements IGetUserRequest {

                        /**
                         * Constructs a new GetUserRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUserRequest);

                        /** The id of the user to get */
                        public userId: string;

                        /**
                         * Creates a new GetUserRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUserRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUserRequest): temporal.api.cloud.cloudservice.v1.GetUserRequest;

                        /**
                         * Encodes the specified GetUserRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserRequest.verify|verify} messages.
                         * @param message GetUserRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUserRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUserRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserRequest.verify|verify} messages.
                         * @param message GetUserRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUserRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUserRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUserRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetUserRequest;

                        /**
                         * Decodes a GetUserRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUserRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUserRequest;

                        /**
                         * Creates a GetUserRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUserRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUserRequest;

                        /**
                         * Creates a plain object from a GetUserRequest message. Also converts values to other types if specified.
                         * @param message GetUserRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUserRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUserRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUserRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetUserResponse. */
                    interface IGetUserResponse {

                        /** The user */
                        user?: (temporal.api.cloud.identity.v1.IUser|null);
                    }

                    /** Represents a GetUserResponse. */
                    class GetUserResponse implements IGetUserResponse {

                        /**
                         * Constructs a new GetUserResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUserResponse);

                        /** The user */
                        public user?: (temporal.api.cloud.identity.v1.IUser|null);

                        /**
                         * Creates a new GetUserResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUserResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUserResponse): temporal.api.cloud.cloudservice.v1.GetUserResponse;

                        /**
                         * Encodes the specified GetUserResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserResponse.verify|verify} messages.
                         * @param message GetUserResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUserResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUserResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserResponse.verify|verify} messages.
                         * @param message GetUserResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUserResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUserResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUserResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetUserResponse;

                        /**
                         * Decodes a GetUserResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUserResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUserResponse;

                        /**
                         * Creates a GetUserResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUserResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUserResponse;

                        /**
                         * Creates a plain object from a GetUserResponse message. Also converts values to other types if specified.
                         * @param message GetUserResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUserResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUserResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUserResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateUserRequest. */
                    interface ICreateUserRequest {

                        /** The spec for the user to invite */
                        spec?: (temporal.api.cloud.identity.v1.IUserSpec|null);

                        /** The id to use for this async operation - optional */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a CreateUserRequest. */
                    class CreateUserRequest implements ICreateUserRequest {

                        /**
                         * Constructs a new CreateUserRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateUserRequest);

                        /** The spec for the user to invite */
                        public spec?: (temporal.api.cloud.identity.v1.IUserSpec|null);

                        /** The id to use for this async operation - optional */
                        public asyncOperationId: string;

                        /**
                         * Creates a new CreateUserRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateUserRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateUserRequest): temporal.api.cloud.cloudservice.v1.CreateUserRequest;

                        /**
                         * Encodes the specified CreateUserRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateUserRequest.verify|verify} messages.
                         * @param message CreateUserRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateUserRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateUserRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateUserRequest.verify|verify} messages.
                         * @param message CreateUserRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateUserRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateUserRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateUserRequest
                         * @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): temporal.api.cloud.cloudservice.v1.CreateUserRequest;

                        /**
                         * Decodes a CreateUserRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateUserRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateUserRequest;

                        /**
                         * Creates a CreateUserRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateUserRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateUserRequest;

                        /**
                         * Creates a plain object from a CreateUserRequest message. Also converts values to other types if specified.
                         * @param message CreateUserRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateUserRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateUserRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateUserRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateUserResponse. */
                    interface ICreateUserResponse {

                        /** The id of the user that was invited */
                        userId?: (string|null);

                        /** The async operation */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a CreateUserResponse. */
                    class CreateUserResponse implements ICreateUserResponse {

                        /**
                         * Constructs a new CreateUserResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateUserResponse);

                        /** The id of the user that was invited */
                        public userId: string;

                        /** The async operation */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new CreateUserResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateUserResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateUserResponse): temporal.api.cloud.cloudservice.v1.CreateUserResponse;

                        /**
                         * Encodes the specified CreateUserResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateUserResponse.verify|verify} messages.
                         * @param message CreateUserResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateUserResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateUserResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateUserResponse.verify|verify} messages.
                         * @param message CreateUserResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateUserResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateUserResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateUserResponse
                         * @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): temporal.api.cloud.cloudservice.v1.CreateUserResponse;

                        /**
                         * Decodes a CreateUserResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateUserResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateUserResponse;

                        /**
                         * Creates a CreateUserResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateUserResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateUserResponse;

                        /**
                         * Creates a plain object from a CreateUserResponse message. Also converts values to other types if specified.
                         * @param message CreateUserResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateUserResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateUserResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateUserResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateUserRequest. */
                    interface IUpdateUserRequest {

                        /** The id of the user to update */
                        userId?: (string|null);

                        /** The new user specification */
                        spec?: (temporal.api.cloud.identity.v1.IUserSpec|null);

                        /**
                         * The version of the user for which this update is intended for
                         * The latest version can be found in the GetUser operation response
                         */
                        resourceVersion?: (string|null);

                        /** The id to use for this async operation - optional */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents an UpdateUserRequest. */
                    class UpdateUserRequest implements IUpdateUserRequest {

                        /**
                         * Constructs a new UpdateUserRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateUserRequest);

                        /** The id of the user to update */
                        public userId: string;

                        /** The new user specification */
                        public spec?: (temporal.api.cloud.identity.v1.IUserSpec|null);

                        /**
                         * The version of the user for which this update is intended for
                         * The latest version can be found in the GetUser operation response
                         */
                        public resourceVersion: string;

                        /** The id to use for this async operation - optional */
                        public asyncOperationId: string;

                        /**
                         * Creates a new UpdateUserRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateUserRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateUserRequest): temporal.api.cloud.cloudservice.v1.UpdateUserRequest;

                        /**
                         * Encodes the specified UpdateUserRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateUserRequest.verify|verify} messages.
                         * @param message UpdateUserRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateUserRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateUserRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateUserRequest.verify|verify} messages.
                         * @param message UpdateUserRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateUserRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateUserRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateUserRequest
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateUserRequest;

                        /**
                         * Decodes an UpdateUserRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateUserRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateUserRequest;

                        /**
                         * Creates an UpdateUserRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateUserRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateUserRequest;

                        /**
                         * Creates a plain object from an UpdateUserRequest message. Also converts values to other types if specified.
                         * @param message UpdateUserRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateUserRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateUserRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateUserRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateUserResponse. */
                    interface IUpdateUserResponse {

                        /** The async operation */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents an UpdateUserResponse. */
                    class UpdateUserResponse implements IUpdateUserResponse {

                        /**
                         * Constructs a new UpdateUserResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateUserResponse);

                        /** The async operation */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new UpdateUserResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateUserResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateUserResponse): temporal.api.cloud.cloudservice.v1.UpdateUserResponse;

                        /**
                         * Encodes the specified UpdateUserResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateUserResponse.verify|verify} messages.
                         * @param message UpdateUserResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateUserResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateUserResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateUserResponse.verify|verify} messages.
                         * @param message UpdateUserResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateUserResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateUserResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateUserResponse
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateUserResponse;

                        /**
                         * Decodes an UpdateUserResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateUserResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateUserResponse;

                        /**
                         * Creates an UpdateUserResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateUserResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateUserResponse;

                        /**
                         * Creates a plain object from an UpdateUserResponse message. Also converts values to other types if specified.
                         * @param message UpdateUserResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateUserResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateUserResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateUserResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteUserRequest. */
                    interface IDeleteUserRequest {

                        /** The id of the user to delete */
                        userId?: (string|null);

                        /**
                         * The version of the user for which this delete is intended for
                         * The latest version can be found in the GetUser operation response
                         */
                        resourceVersion?: (string|null);

                        /** The id to use for this async operation - optional */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a DeleteUserRequest. */
                    class DeleteUserRequest implements IDeleteUserRequest {

                        /**
                         * Constructs a new DeleteUserRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteUserRequest);

                        /** The id of the user to delete */
                        public userId: string;

                        /**
                         * The version of the user for which this delete is intended for
                         * The latest version can be found in the GetUser operation response
                         */
                        public resourceVersion: string;

                        /** The id to use for this async operation - optional */
                        public asyncOperationId: string;

                        /**
                         * Creates a new DeleteUserRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteUserRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteUserRequest): temporal.api.cloud.cloudservice.v1.DeleteUserRequest;

                        /**
                         * Encodes the specified DeleteUserRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteUserRequest.verify|verify} messages.
                         * @param message DeleteUserRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteUserRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteUserRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteUserRequest.verify|verify} messages.
                         * @param message DeleteUserRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteUserRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteUserRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteUserRequest
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteUserRequest;

                        /**
                         * Decodes a DeleteUserRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteUserRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteUserRequest;

                        /**
                         * Creates a DeleteUserRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteUserRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteUserRequest;

                        /**
                         * Creates a plain object from a DeleteUserRequest message. Also converts values to other types if specified.
                         * @param message DeleteUserRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteUserRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteUserRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteUserRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteUserResponse. */
                    interface IDeleteUserResponse {

                        /** The async operation */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a DeleteUserResponse. */
                    class DeleteUserResponse implements IDeleteUserResponse {

                        /**
                         * Constructs a new DeleteUserResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteUserResponse);

                        /** The async operation */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new DeleteUserResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteUserResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteUserResponse): temporal.api.cloud.cloudservice.v1.DeleteUserResponse;

                        /**
                         * Encodes the specified DeleteUserResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteUserResponse.verify|verify} messages.
                         * @param message DeleteUserResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteUserResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteUserResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteUserResponse.verify|verify} messages.
                         * @param message DeleteUserResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteUserResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteUserResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteUserResponse
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteUserResponse;

                        /**
                         * Decodes a DeleteUserResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteUserResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteUserResponse;

                        /**
                         * Creates a DeleteUserResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteUserResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteUserResponse;

                        /**
                         * Creates a plain object from a DeleteUserResponse message. Also converts values to other types if specified.
                         * @param message DeleteUserResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteUserResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteUserResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteUserResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SetUserNamespaceAccessRequest. */
                    interface ISetUserNamespaceAccessRequest {

                        /** The namespace to set permissions for */
                        namespace?: (string|null);

                        /** The id of the user to set permissions for */
                        userId?: (string|null);

                        /** The namespace access to assign the user */
                        access?: (temporal.api.cloud.identity.v1.INamespaceAccess|null);

                        /**
                         * The version of the user for which this update is intended for
                         * The latest version can be found in the GetUser operation response
                         */
                        resourceVersion?: (string|null);

                        /** The id to use for this async operation - optional */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a SetUserNamespaceAccessRequest. */
                    class SetUserNamespaceAccessRequest implements ISetUserNamespaceAccessRequest {

                        /**
                         * Constructs a new SetUserNamespaceAccessRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ISetUserNamespaceAccessRequest);

                        /** The namespace to set permissions for */
                        public namespace: string;

                        /** The id of the user to set permissions for */
                        public userId: string;

                        /** The namespace access to assign the user */
                        public access?: (temporal.api.cloud.identity.v1.INamespaceAccess|null);

                        /**
                         * The version of the user for which this update is intended for
                         * The latest version can be found in the GetUser operation response
                         */
                        public resourceVersion: string;

                        /** The id to use for this async operation - optional */
                        public asyncOperationId: string;

                        /**
                         * Creates a new SetUserNamespaceAccessRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SetUserNamespaceAccessRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ISetUserNamespaceAccessRequest): temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessRequest;

                        /**
                         * Encodes the specified SetUserNamespaceAccessRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessRequest.verify|verify} messages.
                         * @param message SetUserNamespaceAccessRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ISetUserNamespaceAccessRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SetUserNamespaceAccessRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessRequest.verify|verify} messages.
                         * @param message SetUserNamespaceAccessRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ISetUserNamespaceAccessRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SetUserNamespaceAccessRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SetUserNamespaceAccessRequest
                         * @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): temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessRequest;

                        /**
                         * Decodes a SetUserNamespaceAccessRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SetUserNamespaceAccessRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessRequest;

                        /**
                         * Creates a SetUserNamespaceAccessRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SetUserNamespaceAccessRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessRequest;

                        /**
                         * Creates a plain object from a SetUserNamespaceAccessRequest message. Also converts values to other types if specified.
                         * @param message SetUserNamespaceAccessRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SetUserNamespaceAccessRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SetUserNamespaceAccessRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SetUserNamespaceAccessResponse. */
                    interface ISetUserNamespaceAccessResponse {

                        /** The async operation */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a SetUserNamespaceAccessResponse. */
                    class SetUserNamespaceAccessResponse implements ISetUserNamespaceAccessResponse {

                        /**
                         * Constructs a new SetUserNamespaceAccessResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ISetUserNamespaceAccessResponse);

                        /** The async operation */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new SetUserNamespaceAccessResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SetUserNamespaceAccessResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ISetUserNamespaceAccessResponse): temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessResponse;

                        /**
                         * Encodes the specified SetUserNamespaceAccessResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessResponse.verify|verify} messages.
                         * @param message SetUserNamespaceAccessResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ISetUserNamespaceAccessResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SetUserNamespaceAccessResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessResponse.verify|verify} messages.
                         * @param message SetUserNamespaceAccessResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ISetUserNamespaceAccessResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SetUserNamespaceAccessResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SetUserNamespaceAccessResponse
                         * @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): temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessResponse;

                        /**
                         * Decodes a SetUserNamespaceAccessResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SetUserNamespaceAccessResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessResponse;

                        /**
                         * Creates a SetUserNamespaceAccessResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SetUserNamespaceAccessResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessResponse;

                        /**
                         * Creates a plain object from a SetUserNamespaceAccessResponse message. Also converts values to other types if specified.
                         * @param message SetUserNamespaceAccessResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.SetUserNamespaceAccessResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SetUserNamespaceAccessResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SetUserNamespaceAccessResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetAsyncOperationRequest. */
                    interface IGetAsyncOperationRequest {

                        /** The id of the async operation to get */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a GetAsyncOperationRequest. */
                    class GetAsyncOperationRequest implements IGetAsyncOperationRequest {

                        /**
                         * Constructs a new GetAsyncOperationRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetAsyncOperationRequest);

                        /** The id of the async operation to get */
                        public asyncOperationId: string;

                        /**
                         * Creates a new GetAsyncOperationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAsyncOperationRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetAsyncOperationRequest): temporal.api.cloud.cloudservice.v1.GetAsyncOperationRequest;

                        /**
                         * Encodes the specified GetAsyncOperationRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetAsyncOperationRequest.verify|verify} messages.
                         * @param message GetAsyncOperationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetAsyncOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAsyncOperationRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetAsyncOperationRequest.verify|verify} messages.
                         * @param message GetAsyncOperationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetAsyncOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAsyncOperationRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetAsyncOperationRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetAsyncOperationRequest;

                        /**
                         * Decodes a GetAsyncOperationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAsyncOperationRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetAsyncOperationRequest;

                        /**
                         * Creates a GetAsyncOperationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetAsyncOperationRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetAsyncOperationRequest;

                        /**
                         * Creates a plain object from a GetAsyncOperationRequest message. Also converts values to other types if specified.
                         * @param message GetAsyncOperationRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetAsyncOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAsyncOperationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetAsyncOperationRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetAsyncOperationResponse. */
                    interface IGetAsyncOperationResponse {

                        /** The async operation */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a GetAsyncOperationResponse. */
                    class GetAsyncOperationResponse implements IGetAsyncOperationResponse {

                        /**
                         * Constructs a new GetAsyncOperationResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetAsyncOperationResponse);

                        /** The async operation */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new GetAsyncOperationResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAsyncOperationResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetAsyncOperationResponse): temporal.api.cloud.cloudservice.v1.GetAsyncOperationResponse;

                        /**
                         * Encodes the specified GetAsyncOperationResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetAsyncOperationResponse.verify|verify} messages.
                         * @param message GetAsyncOperationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetAsyncOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAsyncOperationResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetAsyncOperationResponse.verify|verify} messages.
                         * @param message GetAsyncOperationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetAsyncOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAsyncOperationResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetAsyncOperationResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetAsyncOperationResponse;

                        /**
                         * Decodes a GetAsyncOperationResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAsyncOperationResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetAsyncOperationResponse;

                        /**
                         * Creates a GetAsyncOperationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetAsyncOperationResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetAsyncOperationResponse;

                        /**
                         * Creates a plain object from a GetAsyncOperationResponse message. Also converts values to other types if specified.
                         * @param message GetAsyncOperationResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetAsyncOperationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAsyncOperationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetAsyncOperationResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateNamespaceRequest. */
                    interface ICreateNamespaceRequest {

                        /** The namespace specification. */
                        spec?: (temporal.api.cloud.namespace.v1.INamespaceSpec|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);

                        /**
                         * The tags to add to the namespace.
                         * Note: This field can be set by global admins or account owners only.
                         */
                        tags?: ({ [k: string]: string }|null);
                    }

                    /** Represents a CreateNamespaceRequest. */
                    class CreateNamespaceRequest implements ICreateNamespaceRequest {

                        /**
                         * Constructs a new CreateNamespaceRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateNamespaceRequest);

                        /** The namespace specification. */
                        public spec?: (temporal.api.cloud.namespace.v1.INamespaceSpec|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * The tags to add to the namespace.
                         * Note: This field can be set by global admins or account owners only.
                         */
                        public tags: { [k: string]: string };

                        /**
                         * Creates a new CreateNamespaceRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateNamespaceRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateNamespaceRequest): temporal.api.cloud.cloudservice.v1.CreateNamespaceRequest;

                        /**
                         * Encodes the specified CreateNamespaceRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNamespaceRequest.verify|verify} messages.
                         * @param message CreateNamespaceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateNamespaceRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNamespaceRequest.verify|verify} messages.
                         * @param message CreateNamespaceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateNamespaceRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateNamespaceRequest
                         * @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): temporal.api.cloud.cloudservice.v1.CreateNamespaceRequest;

                        /**
                         * Decodes a CreateNamespaceRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateNamespaceRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateNamespaceRequest;

                        /**
                         * Creates a CreateNamespaceRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateNamespaceRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateNamespaceRequest;

                        /**
                         * Creates a plain object from a CreateNamespaceRequest message. Also converts values to other types if specified.
                         * @param message CreateNamespaceRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateNamespaceRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateNamespaceRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateNamespaceRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateNamespaceResponse. */
                    interface ICreateNamespaceResponse {

                        /** The namespace that was created. */
                        namespace?: (string|null);

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a CreateNamespaceResponse. */
                    class CreateNamespaceResponse implements ICreateNamespaceResponse {

                        /**
                         * Constructs a new CreateNamespaceResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateNamespaceResponse);

                        /** The namespace that was created. */
                        public namespace: string;

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new CreateNamespaceResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateNamespaceResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateNamespaceResponse): temporal.api.cloud.cloudservice.v1.CreateNamespaceResponse;

                        /**
                         * Encodes the specified CreateNamespaceResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNamespaceResponse.verify|verify} messages.
                         * @param message CreateNamespaceResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateNamespaceResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNamespaceResponse.verify|verify} messages.
                         * @param message CreateNamespaceResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateNamespaceResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateNamespaceResponse
                         * @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): temporal.api.cloud.cloudservice.v1.CreateNamespaceResponse;

                        /**
                         * Decodes a CreateNamespaceResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateNamespaceResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateNamespaceResponse;

                        /**
                         * Creates a CreateNamespaceResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateNamespaceResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateNamespaceResponse;

                        /**
                         * Creates a plain object from a CreateNamespaceResponse message. Also converts values to other types if specified.
                         * @param message CreateNamespaceResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateNamespaceResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateNamespaceResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateNamespaceResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNamespacesRequest. */
                    interface IGetNamespacesRequest {

                        /**
                         * The requested size of the page to retrieve.
                         * Cannot exceed 1000.
                         * Optional, defaults to 100.
                         */
                        pageSize?: (number|null);

                        /**
                         * The page token if this is continuing from another response.
                         * Optional, defaults to empty.
                         */
                        pageToken?: (string|null);

                        /**
                         * Filter namespaces by their name.
                         * Optional, defaults to empty.
                         */
                        name?: (string|null);
                    }

                    /** Represents a GetNamespacesRequest. */
                    class GetNamespacesRequest implements IGetNamespacesRequest {

                        /**
                         * Constructs a new GetNamespacesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespacesRequest);

                        /**
                         * The requested size of the page to retrieve.
                         * Cannot exceed 1000.
                         * Optional, defaults to 100.
                         */
                        public pageSize: number;

                        /**
                         * The page token if this is continuing from another response.
                         * Optional, defaults to empty.
                         */
                        public pageToken: string;

                        /**
                         * Filter namespaces by their name.
                         * Optional, defaults to empty.
                         */
                        public name: string;

                        /**
                         * Creates a new GetNamespacesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNamespacesRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespacesRequest): temporal.api.cloud.cloudservice.v1.GetNamespacesRequest;

                        /**
                         * Encodes the specified GetNamespacesRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespacesRequest.verify|verify} messages.
                         * @param message GetNamespacesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNamespacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNamespacesRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespacesRequest.verify|verify} messages.
                         * @param message GetNamespacesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNamespacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNamespacesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNamespacesRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetNamespacesRequest;

                        /**
                         * Decodes a GetNamespacesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNamespacesRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNamespacesRequest;

                        /**
                         * Creates a GetNamespacesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNamespacesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNamespacesRequest;

                        /**
                         * Creates a plain object from a GetNamespacesRequest message. Also converts values to other types if specified.
                         * @param message GetNamespacesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNamespacesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNamespacesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNamespacesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNamespacesResponse. */
                    interface IGetNamespacesResponse {

                        /** The list of namespaces in ascending name order. */
                        namespaces?: (temporal.api.cloud.namespace.v1.INamespace[]|null);

                        /** The next page's token. */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a GetNamespacesResponse. */
                    class GetNamespacesResponse implements IGetNamespacesResponse {

                        /**
                         * Constructs a new GetNamespacesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespacesResponse);

                        /** The list of namespaces in ascending name order. */
                        public namespaces: temporal.api.cloud.namespace.v1.INamespace[];

                        /** The next page's token. */
                        public nextPageToken: string;

                        /**
                         * Creates a new GetNamespacesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNamespacesResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespacesResponse): temporal.api.cloud.cloudservice.v1.GetNamespacesResponse;

                        /**
                         * Encodes the specified GetNamespacesResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespacesResponse.verify|verify} messages.
                         * @param message GetNamespacesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNamespacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNamespacesResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespacesResponse.verify|verify} messages.
                         * @param message GetNamespacesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNamespacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNamespacesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNamespacesResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetNamespacesResponse;

                        /**
                         * Decodes a GetNamespacesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNamespacesResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNamespacesResponse;

                        /**
                         * Creates a GetNamespacesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNamespacesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNamespacesResponse;

                        /**
                         * Creates a plain object from a GetNamespacesResponse message. Also converts values to other types if specified.
                         * @param message GetNamespacesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNamespacesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNamespacesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNamespacesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNamespaceRequest. */
                    interface IGetNamespaceRequest {

                        /** The namespace to get. */
                        namespace?: (string|null);
                    }

                    /** Represents a GetNamespaceRequest. */
                    class GetNamespaceRequest implements IGetNamespaceRequest {

                        /**
                         * Constructs a new GetNamespaceRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceRequest);

                        /** The namespace to get. */
                        public namespace: string;

                        /**
                         * Creates a new GetNamespaceRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNamespaceRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceRequest): temporal.api.cloud.cloudservice.v1.GetNamespaceRequest;

                        /**
                         * Encodes the specified GetNamespaceRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceRequest.verify|verify} messages.
                         * @param message GetNamespaceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNamespaceRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceRequest.verify|verify} messages.
                         * @param message GetNamespaceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNamespaceRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNamespaceRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetNamespaceRequest;

                        /**
                         * Decodes a GetNamespaceRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNamespaceRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNamespaceRequest;

                        /**
                         * Creates a GetNamespaceRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNamespaceRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNamespaceRequest;

                        /**
                         * Creates a plain object from a GetNamespaceRequest message. Also converts values to other types if specified.
                         * @param message GetNamespaceRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNamespaceRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNamespaceRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNamespaceRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNamespaceResponse. */
                    interface IGetNamespaceResponse {

                        /** The namespace. */
                        namespace?: (temporal.api.cloud.namespace.v1.INamespace|null);
                    }

                    /** Represents a GetNamespaceResponse. */
                    class GetNamespaceResponse implements IGetNamespaceResponse {

                        /**
                         * Constructs a new GetNamespaceResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceResponse);

                        /** The namespace. */
                        public namespace?: (temporal.api.cloud.namespace.v1.INamespace|null);

                        /**
                         * Creates a new GetNamespaceResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNamespaceResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceResponse): temporal.api.cloud.cloudservice.v1.GetNamespaceResponse;

                        /**
                         * Encodes the specified GetNamespaceResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceResponse.verify|verify} messages.
                         * @param message GetNamespaceResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNamespaceResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceResponse.verify|verify} messages.
                         * @param message GetNamespaceResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNamespaceResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNamespaceResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetNamespaceResponse;

                        /**
                         * Decodes a GetNamespaceResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNamespaceResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNamespaceResponse;

                        /**
                         * Creates a GetNamespaceResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNamespaceResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNamespaceResponse;

                        /**
                         * Creates a plain object from a GetNamespaceResponse message. Also converts values to other types if specified.
                         * @param message GetNamespaceResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNamespaceResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNamespaceResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNamespaceResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateNamespaceRequest. */
                    interface IUpdateNamespaceRequest {

                        /** The namespace to update. */
                        namespace?: (string|null);

                        /** The new namespace specification. */
                        spec?: (temporal.api.cloud.namespace.v1.INamespaceSpec|null);

                        /**
                         * The version of the namespace for which this update is intended for.
                         * The latest version can be found in the namespace status.
                         */
                        resourceVersion?: (string|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents an UpdateNamespaceRequest. */
                    class UpdateNamespaceRequest implements IUpdateNamespaceRequest {

                        /**
                         * Constructs a new UpdateNamespaceRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceRequest);

                        /** The namespace to update. */
                        public namespace: string;

                        /** The new namespace specification. */
                        public spec?: (temporal.api.cloud.namespace.v1.INamespaceSpec|null);

                        /**
                         * The version of the namespace for which this update is intended for.
                         * The latest version can be found in the namespace status.
                         */
                        public resourceVersion: string;

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * Creates a new UpdateNamespaceRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateNamespaceRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceRequest): temporal.api.cloud.cloudservice.v1.UpdateNamespaceRequest;

                        /**
                         * Encodes the specified UpdateNamespaceRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceRequest.verify|verify} messages.
                         * @param message UpdateNamespaceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateNamespaceRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceRequest.verify|verify} messages.
                         * @param message UpdateNamespaceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateNamespaceRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateNamespaceRequest
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateNamespaceRequest;

                        /**
                         * Decodes an UpdateNamespaceRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateNamespaceRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateNamespaceRequest;

                        /**
                         * Creates an UpdateNamespaceRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateNamespaceRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateNamespaceRequest;

                        /**
                         * Creates a plain object from an UpdateNamespaceRequest message. Also converts values to other types if specified.
                         * @param message UpdateNamespaceRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateNamespaceRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateNamespaceRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateNamespaceRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateNamespaceResponse. */
                    interface IUpdateNamespaceResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents an UpdateNamespaceResponse. */
                    class UpdateNamespaceResponse implements IUpdateNamespaceResponse {

                        /**
                         * Constructs a new UpdateNamespaceResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new UpdateNamespaceResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateNamespaceResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceResponse): temporal.api.cloud.cloudservice.v1.UpdateNamespaceResponse;

                        /**
                         * Encodes the specified UpdateNamespaceResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceResponse.verify|verify} messages.
                         * @param message UpdateNamespaceResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateNamespaceResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceResponse.verify|verify} messages.
                         * @param message UpdateNamespaceResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateNamespaceResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateNamespaceResponse
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateNamespaceResponse;

                        /**
                         * Decodes an UpdateNamespaceResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateNamespaceResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateNamespaceResponse;

                        /**
                         * Creates an UpdateNamespaceResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateNamespaceResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateNamespaceResponse;

                        /**
                         * Creates a plain object from an UpdateNamespaceResponse message. Also converts values to other types if specified.
                         * @param message UpdateNamespaceResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateNamespaceResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateNamespaceResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateNamespaceResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RenameCustomSearchAttributeRequest. */
                    interface IRenameCustomSearchAttributeRequest {

                        /** The namespace to rename the custom search attribute for. */
                        namespace?: (string|null);

                        /** The existing name of the custom search attribute to be renamed. */
                        existingCustomSearchAttributeName?: (string|null);

                        /** The new name of the custom search attribute. */
                        newCustomSearchAttributeName?: (string|null);

                        /**
                         * The version of the namespace for which this update is intended for.
                         * The latest version can be found in the namespace status.
                         */
                        resourceVersion?: (string|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a RenameCustomSearchAttributeRequest. */
                    class RenameCustomSearchAttributeRequest implements IRenameCustomSearchAttributeRequest {

                        /**
                         * Constructs a new RenameCustomSearchAttributeRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IRenameCustomSearchAttributeRequest);

                        /** The namespace to rename the custom search attribute for. */
                        public namespace: string;

                        /** The existing name of the custom search attribute to be renamed. */
                        public existingCustomSearchAttributeName: string;

                        /** The new name of the custom search attribute. */
                        public newCustomSearchAttributeName: string;

                        /**
                         * The version of the namespace for which this update is intended for.
                         * The latest version can be found in the namespace status.
                         */
                        public resourceVersion: string;

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * Creates a new RenameCustomSearchAttributeRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RenameCustomSearchAttributeRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IRenameCustomSearchAttributeRequest): temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeRequest;

                        /**
                         * Encodes the specified RenameCustomSearchAttributeRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeRequest.verify|verify} messages.
                         * @param message RenameCustomSearchAttributeRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IRenameCustomSearchAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RenameCustomSearchAttributeRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeRequest.verify|verify} messages.
                         * @param message RenameCustomSearchAttributeRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IRenameCustomSearchAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RenameCustomSearchAttributeRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RenameCustomSearchAttributeRequest
                         * @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): temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeRequest;

                        /**
                         * Decodes a RenameCustomSearchAttributeRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RenameCustomSearchAttributeRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeRequest;

                        /**
                         * Creates a RenameCustomSearchAttributeRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RenameCustomSearchAttributeRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeRequest;

                        /**
                         * Creates a plain object from a RenameCustomSearchAttributeRequest message. Also converts values to other types if specified.
                         * @param message RenameCustomSearchAttributeRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RenameCustomSearchAttributeRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RenameCustomSearchAttributeRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RenameCustomSearchAttributeResponse. */
                    interface IRenameCustomSearchAttributeResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a RenameCustomSearchAttributeResponse. */
                    class RenameCustomSearchAttributeResponse implements IRenameCustomSearchAttributeResponse {

                        /**
                         * Constructs a new RenameCustomSearchAttributeResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IRenameCustomSearchAttributeResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new RenameCustomSearchAttributeResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RenameCustomSearchAttributeResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IRenameCustomSearchAttributeResponse): temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeResponse;

                        /**
                         * Encodes the specified RenameCustomSearchAttributeResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeResponse.verify|verify} messages.
                         * @param message RenameCustomSearchAttributeResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IRenameCustomSearchAttributeResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RenameCustomSearchAttributeResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeResponse.verify|verify} messages.
                         * @param message RenameCustomSearchAttributeResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IRenameCustomSearchAttributeResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RenameCustomSearchAttributeResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RenameCustomSearchAttributeResponse
                         * @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): temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeResponse;

                        /**
                         * Decodes a RenameCustomSearchAttributeResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RenameCustomSearchAttributeResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeResponse;

                        /**
                         * Creates a RenameCustomSearchAttributeResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RenameCustomSearchAttributeResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeResponse;

                        /**
                         * Creates a plain object from a RenameCustomSearchAttributeResponse message. Also converts values to other types if specified.
                         * @param message RenameCustomSearchAttributeResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.RenameCustomSearchAttributeResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RenameCustomSearchAttributeResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RenameCustomSearchAttributeResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteNamespaceRequest. */
                    interface IDeleteNamespaceRequest {

                        /** The namespace to delete. */
                        namespace?: (string|null);

                        /**
                         * The version of the namespace for which this delete is intended for.
                         * The latest version can be found in the namespace status.
                         */
                        resourceVersion?: (string|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a DeleteNamespaceRequest. */
                    class DeleteNamespaceRequest implements IDeleteNamespaceRequest {

                        /**
                         * Constructs a new DeleteNamespaceRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRequest);

                        /** The namespace to delete. */
                        public namespace: string;

                        /**
                         * The version of the namespace for which this delete is intended for.
                         * The latest version can be found in the namespace status.
                         */
                        public resourceVersion: string;

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * Creates a new DeleteNamespaceRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteNamespaceRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRequest): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRequest;

                        /**
                         * Encodes the specified DeleteNamespaceRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceRequest.verify|verify} messages.
                         * @param message DeleteNamespaceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteNamespaceRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceRequest.verify|verify} messages.
                         * @param message DeleteNamespaceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteNamespaceRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteNamespaceRequest
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRequest;

                        /**
                         * Decodes a DeleteNamespaceRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteNamespaceRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRequest;

                        /**
                         * Creates a DeleteNamespaceRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteNamespaceRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRequest;

                        /**
                         * Creates a plain object from a DeleteNamespaceRequest message. Also converts values to other types if specified.
                         * @param message DeleteNamespaceRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteNamespaceRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteNamespaceRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteNamespaceRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteNamespaceResponse. */
                    interface IDeleteNamespaceResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a DeleteNamespaceResponse. */
                    class DeleteNamespaceResponse implements IDeleteNamespaceResponse {

                        /**
                         * Constructs a new DeleteNamespaceResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new DeleteNamespaceResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteNamespaceResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceResponse): temporal.api.cloud.cloudservice.v1.DeleteNamespaceResponse;

                        /**
                         * Encodes the specified DeleteNamespaceResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceResponse.verify|verify} messages.
                         * @param message DeleteNamespaceResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteNamespaceResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceResponse.verify|verify} messages.
                         * @param message DeleteNamespaceResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteNamespaceResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteNamespaceResponse
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteNamespaceResponse;

                        /**
                         * Decodes a DeleteNamespaceResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteNamespaceResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteNamespaceResponse;

                        /**
                         * Creates a DeleteNamespaceResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteNamespaceResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteNamespaceResponse;

                        /**
                         * Creates a plain object from a DeleteNamespaceResponse message. Also converts values to other types if specified.
                         * @param message DeleteNamespaceResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteNamespaceResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteNamespaceResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteNamespaceResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FailoverNamespaceRegionRequest. */
                    interface IFailoverNamespaceRegionRequest {

                        /** The namespace to failover. */
                        namespace?: (string|null);

                        /**
                         * The id of the region to failover to.
                         * Must be a region that the namespace is currently available in.
                         */
                        region?: (string|null);

                        /** The id to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a FailoverNamespaceRegionRequest. */
                    class FailoverNamespaceRegionRequest implements IFailoverNamespaceRegionRequest {

                        /**
                         * Constructs a new FailoverNamespaceRegionRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IFailoverNamespaceRegionRequest);

                        /** The namespace to failover. */
                        public namespace: string;

                        /**
                         * The id of the region to failover to.
                         * Must be a region that the namespace is currently available in.
                         */
                        public region: string;

                        /** The id to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new FailoverNamespaceRegionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FailoverNamespaceRegionRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IFailoverNamespaceRegionRequest): temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionRequest;

                        /**
                         * Encodes the specified FailoverNamespaceRegionRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionRequest.verify|verify} messages.
                         * @param message FailoverNamespaceRegionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IFailoverNamespaceRegionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FailoverNamespaceRegionRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionRequest.verify|verify} messages.
                         * @param message FailoverNamespaceRegionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IFailoverNamespaceRegionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FailoverNamespaceRegionRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FailoverNamespaceRegionRequest
                         * @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): temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionRequest;

                        /**
                         * Decodes a FailoverNamespaceRegionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FailoverNamespaceRegionRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionRequest;

                        /**
                         * Creates a FailoverNamespaceRegionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FailoverNamespaceRegionRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionRequest;

                        /**
                         * Creates a plain object from a FailoverNamespaceRegionRequest message. Also converts values to other types if specified.
                         * @param message FailoverNamespaceRegionRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FailoverNamespaceRegionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FailoverNamespaceRegionRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FailoverNamespaceRegionResponse. */
                    interface IFailoverNamespaceRegionResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a FailoverNamespaceRegionResponse. */
                    class FailoverNamespaceRegionResponse implements IFailoverNamespaceRegionResponse {

                        /**
                         * Constructs a new FailoverNamespaceRegionResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IFailoverNamespaceRegionResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new FailoverNamespaceRegionResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FailoverNamespaceRegionResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IFailoverNamespaceRegionResponse): temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionResponse;

                        /**
                         * Encodes the specified FailoverNamespaceRegionResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionResponse.verify|verify} messages.
                         * @param message FailoverNamespaceRegionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IFailoverNamespaceRegionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FailoverNamespaceRegionResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionResponse.verify|verify} messages.
                         * @param message FailoverNamespaceRegionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IFailoverNamespaceRegionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FailoverNamespaceRegionResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FailoverNamespaceRegionResponse
                         * @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): temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionResponse;

                        /**
                         * Decodes a FailoverNamespaceRegionResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FailoverNamespaceRegionResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionResponse;

                        /**
                         * Creates a FailoverNamespaceRegionResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FailoverNamespaceRegionResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionResponse;

                        /**
                         * Creates a plain object from a FailoverNamespaceRegionResponse message. Also converts values to other types if specified.
                         * @param message FailoverNamespaceRegionResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.FailoverNamespaceRegionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FailoverNamespaceRegionResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FailoverNamespaceRegionResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AddNamespaceRegionRequest. */
                    interface IAddNamespaceRegionRequest {

                        /** The namespace to add the region to. */
                        namespace?: (string|null);

                        /**
                         * The id of the standby region to add to the namespace.
                         * The GetRegions API can be used to get the list of valid region ids.
                         * Example: "aws-us-west-2".
                         */
                        region?: (string|null);

                        /**
                         * The version of the namespace for which this add region operation is intended for.
                         * The latest version can be found in the GetNamespace operation response.
                         */
                        resourceVersion?: (string|null);

                        /** The id to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents an AddNamespaceRegionRequest. */
                    class AddNamespaceRegionRequest implements IAddNamespaceRegionRequest {

                        /**
                         * Constructs a new AddNamespaceRegionRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IAddNamespaceRegionRequest);

                        /** The namespace to add the region to. */
                        public namespace: string;

                        /**
                         * The id of the standby region to add to the namespace.
                         * The GetRegions API can be used to get the list of valid region ids.
                         * Example: "aws-us-west-2".
                         */
                        public region: string;

                        /**
                         * The version of the namespace for which this add region operation is intended for.
                         * The latest version can be found in the GetNamespace operation response.
                         */
                        public resourceVersion: string;

                        /** The id to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new AddNamespaceRegionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddNamespaceRegionRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IAddNamespaceRegionRequest): temporal.api.cloud.cloudservice.v1.AddNamespaceRegionRequest;

                        /**
                         * Encodes the specified AddNamespaceRegionRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.AddNamespaceRegionRequest.verify|verify} messages.
                         * @param message AddNamespaceRegionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IAddNamespaceRegionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddNamespaceRegionRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.AddNamespaceRegionRequest.verify|verify} messages.
                         * @param message AddNamespaceRegionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IAddNamespaceRegionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddNamespaceRegionRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddNamespaceRegionRequest
                         * @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): temporal.api.cloud.cloudservice.v1.AddNamespaceRegionRequest;

                        /**
                         * Decodes an AddNamespaceRegionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddNamespaceRegionRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.AddNamespaceRegionRequest;

                        /**
                         * Creates an AddNamespaceRegionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AddNamespaceRegionRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.AddNamespaceRegionRequest;

                        /**
                         * Creates a plain object from an AddNamespaceRegionRequest message. Also converts values to other types if specified.
                         * @param message AddNamespaceRegionRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.AddNamespaceRegionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddNamespaceRegionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AddNamespaceRegionRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AddNamespaceRegionResponse. */
                    interface IAddNamespaceRegionResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents an AddNamespaceRegionResponse. */
                    class AddNamespaceRegionResponse implements IAddNamespaceRegionResponse {

                        /**
                         * Constructs a new AddNamespaceRegionResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IAddNamespaceRegionResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new AddNamespaceRegionResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddNamespaceRegionResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IAddNamespaceRegionResponse): temporal.api.cloud.cloudservice.v1.AddNamespaceRegionResponse;

                        /**
                         * Encodes the specified AddNamespaceRegionResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.AddNamespaceRegionResponse.verify|verify} messages.
                         * @param message AddNamespaceRegionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IAddNamespaceRegionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddNamespaceRegionResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.AddNamespaceRegionResponse.verify|verify} messages.
                         * @param message AddNamespaceRegionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IAddNamespaceRegionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddNamespaceRegionResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddNamespaceRegionResponse
                         * @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): temporal.api.cloud.cloudservice.v1.AddNamespaceRegionResponse;

                        /**
                         * Decodes an AddNamespaceRegionResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddNamespaceRegionResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.AddNamespaceRegionResponse;

                        /**
                         * Creates an AddNamespaceRegionResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AddNamespaceRegionResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.AddNamespaceRegionResponse;

                        /**
                         * Creates a plain object from an AddNamespaceRegionResponse message. Also converts values to other types if specified.
                         * @param message AddNamespaceRegionResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.AddNamespaceRegionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddNamespaceRegionResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AddNamespaceRegionResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteNamespaceRegionRequest. */
                    interface IDeleteNamespaceRegionRequest {

                        /** The namespace to delete a region. */
                        namespace?: (string|null);

                        /**
                         * The id of the standby region to be deleted.
                         * The GetRegions API can be used to get the list of valid region ids.
                         * Example: "aws-us-west-2".
                         */
                        region?: (string|null);

                        /**
                         * The version of the namespace for which this delete region operation is intended for.
                         * The latest version can be found in the GetNamespace operation response.
                         */
                        resourceVersion?: (string|null);

                        /** The id to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a DeleteNamespaceRegionRequest. */
                    class DeleteNamespaceRegionRequest implements IDeleteNamespaceRegionRequest {

                        /**
                         * Constructs a new DeleteNamespaceRegionRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRegionRequest);

                        /** The namespace to delete a region. */
                        public namespace: string;

                        /**
                         * The id of the standby region to be deleted.
                         * The GetRegions API can be used to get the list of valid region ids.
                         * Example: "aws-us-west-2".
                         */
                        public region: string;

                        /**
                         * The version of the namespace for which this delete region operation is intended for.
                         * The latest version can be found in the GetNamespace operation response.
                         */
                        public resourceVersion: string;

                        /** The id to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new DeleteNamespaceRegionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteNamespaceRegionRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRegionRequest): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionRequest;

                        /**
                         * Encodes the specified DeleteNamespaceRegionRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionRequest.verify|verify} messages.
                         * @param message DeleteNamespaceRegionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRegionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteNamespaceRegionRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionRequest.verify|verify} messages.
                         * @param message DeleteNamespaceRegionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRegionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteNamespaceRegionRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteNamespaceRegionRequest
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionRequest;

                        /**
                         * Decodes a DeleteNamespaceRegionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteNamespaceRegionRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionRequest;

                        /**
                         * Creates a DeleteNamespaceRegionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteNamespaceRegionRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionRequest;

                        /**
                         * Creates a plain object from a DeleteNamespaceRegionRequest message. Also converts values to other types if specified.
                         * @param message DeleteNamespaceRegionRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteNamespaceRegionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteNamespaceRegionRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteNamespaceRegionResponse. */
                    interface IDeleteNamespaceRegionResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a DeleteNamespaceRegionResponse. */
                    class DeleteNamespaceRegionResponse implements IDeleteNamespaceRegionResponse {

                        /**
                         * Constructs a new DeleteNamespaceRegionResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRegionResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new DeleteNamespaceRegionResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteNamespaceRegionResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRegionResponse): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionResponse;

                        /**
                         * Encodes the specified DeleteNamespaceRegionResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionResponse.verify|verify} messages.
                         * @param message DeleteNamespaceRegionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRegionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteNamespaceRegionResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionResponse.verify|verify} messages.
                         * @param message DeleteNamespaceRegionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceRegionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteNamespaceRegionResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteNamespaceRegionResponse
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionResponse;

                        /**
                         * Decodes a DeleteNamespaceRegionResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteNamespaceRegionResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionResponse;

                        /**
                         * Creates a DeleteNamespaceRegionResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteNamespaceRegionResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionResponse;

                        /**
                         * Creates a plain object from a DeleteNamespaceRegionResponse message. Also converts values to other types if specified.
                         * @param message DeleteNamespaceRegionResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteNamespaceRegionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteNamespaceRegionResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteNamespaceRegionResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetRegionsRequest. */
                    interface IGetRegionsRequest {
                    }

                    /** Represents a GetRegionsRequest. */
                    class GetRegionsRequest implements IGetRegionsRequest {

                        /**
                         * Constructs a new GetRegionsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetRegionsRequest);

                        /**
                         * Creates a new GetRegionsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetRegionsRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetRegionsRequest): temporal.api.cloud.cloudservice.v1.GetRegionsRequest;

                        /**
                         * Encodes the specified GetRegionsRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetRegionsRequest.verify|verify} messages.
                         * @param message GetRegionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetRegionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetRegionsRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetRegionsRequest.verify|verify} messages.
                         * @param message GetRegionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetRegionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetRegionsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetRegionsRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetRegionsRequest;

                        /**
                         * Decodes a GetRegionsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetRegionsRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetRegionsRequest;

                        /**
                         * Creates a GetRegionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetRegionsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetRegionsRequest;

                        /**
                         * Creates a plain object from a GetRegionsRequest message. Also converts values to other types if specified.
                         * @param message GetRegionsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetRegionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetRegionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetRegionsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetRegionsResponse. */
                    interface IGetRegionsResponse {

                        /** The temporal cloud regions. */
                        regions?: (temporal.api.cloud.region.v1.IRegion[]|null);
                    }

                    /** Represents a GetRegionsResponse. */
                    class GetRegionsResponse implements IGetRegionsResponse {

                        /**
                         * Constructs a new GetRegionsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetRegionsResponse);

                        /** The temporal cloud regions. */
                        public regions: temporal.api.cloud.region.v1.IRegion[];

                        /**
                         * Creates a new GetRegionsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetRegionsResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetRegionsResponse): temporal.api.cloud.cloudservice.v1.GetRegionsResponse;

                        /**
                         * Encodes the specified GetRegionsResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetRegionsResponse.verify|verify} messages.
                         * @param message GetRegionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetRegionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetRegionsResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetRegionsResponse.verify|verify} messages.
                         * @param message GetRegionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetRegionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetRegionsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetRegionsResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetRegionsResponse;

                        /**
                         * Decodes a GetRegionsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetRegionsResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetRegionsResponse;

                        /**
                         * Creates a GetRegionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetRegionsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetRegionsResponse;

                        /**
                         * Creates a plain object from a GetRegionsResponse message. Also converts values to other types if specified.
                         * @param message GetRegionsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetRegionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetRegionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetRegionsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetRegionRequest. */
                    interface IGetRegionRequest {

                        /** The id of the region to get. */
                        region?: (string|null);
                    }

                    /** Represents a GetRegionRequest. */
                    class GetRegionRequest implements IGetRegionRequest {

                        /**
                         * Constructs a new GetRegionRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetRegionRequest);

                        /** The id of the region to get. */
                        public region: string;

                        /**
                         * Creates a new GetRegionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetRegionRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetRegionRequest): temporal.api.cloud.cloudservice.v1.GetRegionRequest;

                        /**
                         * Encodes the specified GetRegionRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetRegionRequest.verify|verify} messages.
                         * @param message GetRegionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetRegionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetRegionRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetRegionRequest.verify|verify} messages.
                         * @param message GetRegionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetRegionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetRegionRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetRegionRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetRegionRequest;

                        /**
                         * Decodes a GetRegionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetRegionRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetRegionRequest;

                        /**
                         * Creates a GetRegionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetRegionRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetRegionRequest;

                        /**
                         * Creates a plain object from a GetRegionRequest message. Also converts values to other types if specified.
                         * @param message GetRegionRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetRegionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetRegionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetRegionRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetRegionResponse. */
                    interface IGetRegionResponse {

                        /** The temporal cloud region. */
                        region?: (temporal.api.cloud.region.v1.IRegion|null);
                    }

                    /** Represents a GetRegionResponse. */
                    class GetRegionResponse implements IGetRegionResponse {

                        /**
                         * Constructs a new GetRegionResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetRegionResponse);

                        /** The temporal cloud region. */
                        public region?: (temporal.api.cloud.region.v1.IRegion|null);

                        /**
                         * Creates a new GetRegionResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetRegionResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetRegionResponse): temporal.api.cloud.cloudservice.v1.GetRegionResponse;

                        /**
                         * Encodes the specified GetRegionResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetRegionResponse.verify|verify} messages.
                         * @param message GetRegionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetRegionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetRegionResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetRegionResponse.verify|verify} messages.
                         * @param message GetRegionResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetRegionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetRegionResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetRegionResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetRegionResponse;

                        /**
                         * Decodes a GetRegionResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetRegionResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetRegionResponse;

                        /**
                         * Creates a GetRegionResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetRegionResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetRegionResponse;

                        /**
                         * Creates a plain object from a GetRegionResponse message. Also converts values to other types if specified.
                         * @param message GetRegionResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetRegionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetRegionResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetRegionResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetApiKeysRequest. */
                    interface IGetApiKeysRequest {

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        pageSize?: (number|null);

                        /** The page token if this is continuing from another response - optional. */
                        pageToken?: (string|null);

                        /** Filter api keys by owner id - optional. */
                        ownerId?: (string|null);

                        /**
                         * Filter api keys by owner type - optional.
                         * Possible values: user, service-account
                         */
                        ownerTypeDeprecated?: (string|null);

                        /**
                         * Filter api keys by owner type - optional.
                         * temporal:enums:replaces=owner_type_deprecated
                         */
                        ownerType?: (temporal.api.cloud.identity.v1.OwnerType|null);
                    }

                    /** Represents a GetApiKeysRequest. */
                    class GetApiKeysRequest implements IGetApiKeysRequest {

                        /**
                         * Constructs a new GetApiKeysRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetApiKeysRequest);

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        public pageSize: number;

                        /** The page token if this is continuing from another response - optional. */
                        public pageToken: string;

                        /** Filter api keys by owner id - optional. */
                        public ownerId: string;

                        /**
                         * Filter api keys by owner type - optional.
                         * Possible values: user, service-account
                         */
                        public ownerTypeDeprecated: string;

                        /**
                         * Filter api keys by owner type - optional.
                         * temporal:enums:replaces=owner_type_deprecated
                         */
                        public ownerType: temporal.api.cloud.identity.v1.OwnerType;

                        /**
                         * Creates a new GetApiKeysRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetApiKeysRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetApiKeysRequest): temporal.api.cloud.cloudservice.v1.GetApiKeysRequest;

                        /**
                         * Encodes the specified GetApiKeysRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetApiKeysRequest.verify|verify} messages.
                         * @param message GetApiKeysRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetApiKeysRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetApiKeysRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetApiKeysRequest.verify|verify} messages.
                         * @param message GetApiKeysRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetApiKeysRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetApiKeysRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetApiKeysRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetApiKeysRequest;

                        /**
                         * Decodes a GetApiKeysRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetApiKeysRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetApiKeysRequest;

                        /**
                         * Creates a GetApiKeysRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetApiKeysRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetApiKeysRequest;

                        /**
                         * Creates a plain object from a GetApiKeysRequest message. Also converts values to other types if specified.
                         * @param message GetApiKeysRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetApiKeysRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetApiKeysRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetApiKeysRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetApiKeysResponse. */
                    interface IGetApiKeysResponse {

                        /** The list of api keys in ascending id order. */
                        apiKeys?: (temporal.api.cloud.identity.v1.IApiKey[]|null);

                        /** The next page's token. */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a GetApiKeysResponse. */
                    class GetApiKeysResponse implements IGetApiKeysResponse {

                        /**
                         * Constructs a new GetApiKeysResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetApiKeysResponse);

                        /** The list of api keys in ascending id order. */
                        public apiKeys: temporal.api.cloud.identity.v1.IApiKey[];

                        /** The next page's token. */
                        public nextPageToken: string;

                        /**
                         * Creates a new GetApiKeysResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetApiKeysResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetApiKeysResponse): temporal.api.cloud.cloudservice.v1.GetApiKeysResponse;

                        /**
                         * Encodes the specified GetApiKeysResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetApiKeysResponse.verify|verify} messages.
                         * @param message GetApiKeysResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetApiKeysResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetApiKeysResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetApiKeysResponse.verify|verify} messages.
                         * @param message GetApiKeysResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetApiKeysResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetApiKeysResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetApiKeysResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetApiKeysResponse;

                        /**
                         * Decodes a GetApiKeysResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetApiKeysResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetApiKeysResponse;

                        /**
                         * Creates a GetApiKeysResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetApiKeysResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetApiKeysResponse;

                        /**
                         * Creates a plain object from a GetApiKeysResponse message. Also converts values to other types if specified.
                         * @param message GetApiKeysResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetApiKeysResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetApiKeysResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetApiKeysResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetApiKeyRequest. */
                    interface IGetApiKeyRequest {

                        /** The id of the api key to get. */
                        keyId?: (string|null);
                    }

                    /** Represents a GetApiKeyRequest. */
                    class GetApiKeyRequest implements IGetApiKeyRequest {

                        /**
                         * Constructs a new GetApiKeyRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetApiKeyRequest);

                        /** The id of the api key to get. */
                        public keyId: string;

                        /**
                         * Creates a new GetApiKeyRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetApiKeyRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetApiKeyRequest): temporal.api.cloud.cloudservice.v1.GetApiKeyRequest;

                        /**
                         * Encodes the specified GetApiKeyRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetApiKeyRequest.verify|verify} messages.
                         * @param message GetApiKeyRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetApiKeyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetApiKeyRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetApiKeyRequest.verify|verify} messages.
                         * @param message GetApiKeyRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetApiKeyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetApiKeyRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetApiKeyRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetApiKeyRequest;

                        /**
                         * Decodes a GetApiKeyRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetApiKeyRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetApiKeyRequest;

                        /**
                         * Creates a GetApiKeyRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetApiKeyRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetApiKeyRequest;

                        /**
                         * Creates a plain object from a GetApiKeyRequest message. Also converts values to other types if specified.
                         * @param message GetApiKeyRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetApiKeyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetApiKeyRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetApiKeyRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetApiKeyResponse. */
                    interface IGetApiKeyResponse {

                        /** The api key. */
                        apiKey?: (temporal.api.cloud.identity.v1.IApiKey|null);
                    }

                    /** Represents a GetApiKeyResponse. */
                    class GetApiKeyResponse implements IGetApiKeyResponse {

                        /**
                         * Constructs a new GetApiKeyResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetApiKeyResponse);

                        /** The api key. */
                        public apiKey?: (temporal.api.cloud.identity.v1.IApiKey|null);

                        /**
                         * Creates a new GetApiKeyResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetApiKeyResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetApiKeyResponse): temporal.api.cloud.cloudservice.v1.GetApiKeyResponse;

                        /**
                         * Encodes the specified GetApiKeyResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetApiKeyResponse.verify|verify} messages.
                         * @param message GetApiKeyResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetApiKeyResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetApiKeyResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetApiKeyResponse.verify|verify} messages.
                         * @param message GetApiKeyResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetApiKeyResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetApiKeyResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetApiKeyResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetApiKeyResponse;

                        /**
                         * Decodes a GetApiKeyResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetApiKeyResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetApiKeyResponse;

                        /**
                         * Creates a GetApiKeyResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetApiKeyResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetApiKeyResponse;

                        /**
                         * Creates a plain object from a GetApiKeyResponse message. Also converts values to other types if specified.
                         * @param message GetApiKeyResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetApiKeyResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetApiKeyResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetApiKeyResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateApiKeyRequest. */
                    interface ICreateApiKeyRequest {

                        /**
                         * The spec for the api key to create.
                         * Create api key only supports service-account owner type for now.
                         */
                        spec?: (temporal.api.cloud.identity.v1.IApiKeySpec|null);

                        /** The id to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a CreateApiKeyRequest. */
                    class CreateApiKeyRequest implements ICreateApiKeyRequest {

                        /**
                         * Constructs a new CreateApiKeyRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateApiKeyRequest);

                        /**
                         * The spec for the api key to create.
                         * Create api key only supports service-account owner type for now.
                         */
                        public spec?: (temporal.api.cloud.identity.v1.IApiKeySpec|null);

                        /** The id to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new CreateApiKeyRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateApiKeyRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateApiKeyRequest): temporal.api.cloud.cloudservice.v1.CreateApiKeyRequest;

                        /**
                         * Encodes the specified CreateApiKeyRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateApiKeyRequest.verify|verify} messages.
                         * @param message CreateApiKeyRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateApiKeyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateApiKeyRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateApiKeyRequest.verify|verify} messages.
                         * @param message CreateApiKeyRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateApiKeyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateApiKeyRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateApiKeyRequest
                         * @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): temporal.api.cloud.cloudservice.v1.CreateApiKeyRequest;

                        /**
                         * Decodes a CreateApiKeyRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateApiKeyRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateApiKeyRequest;

                        /**
                         * Creates a CreateApiKeyRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateApiKeyRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateApiKeyRequest;

                        /**
                         * Creates a plain object from a CreateApiKeyRequest message. Also converts values to other types if specified.
                         * @param message CreateApiKeyRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateApiKeyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateApiKeyRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateApiKeyRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateApiKeyResponse. */
                    interface ICreateApiKeyResponse {

                        /** The id of the api key created. */
                        keyId?: (string|null);

                        /**
                         * The token of the api key created.
                         * This is a secret and should be stored securely.
                         * It will not be retrievable after this response.
                         */
                        token?: (string|null);

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a CreateApiKeyResponse. */
                    class CreateApiKeyResponse implements ICreateApiKeyResponse {

                        /**
                         * Constructs a new CreateApiKeyResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateApiKeyResponse);

                        /** The id of the api key created. */
                        public keyId: string;

                        /**
                         * The token of the api key created.
                         * This is a secret and should be stored securely.
                         * It will not be retrievable after this response.
                         */
                        public token: string;

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new CreateApiKeyResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateApiKeyResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateApiKeyResponse): temporal.api.cloud.cloudservice.v1.CreateApiKeyResponse;

                        /**
                         * Encodes the specified CreateApiKeyResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateApiKeyResponse.verify|verify} messages.
                         * @param message CreateApiKeyResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateApiKeyResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateApiKeyResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateApiKeyResponse.verify|verify} messages.
                         * @param message CreateApiKeyResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateApiKeyResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateApiKeyResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateApiKeyResponse
                         * @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): temporal.api.cloud.cloudservice.v1.CreateApiKeyResponse;

                        /**
                         * Decodes a CreateApiKeyResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateApiKeyResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateApiKeyResponse;

                        /**
                         * Creates a CreateApiKeyResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateApiKeyResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateApiKeyResponse;

                        /**
                         * Creates a plain object from a CreateApiKeyResponse message. Also converts values to other types if specified.
                         * @param message CreateApiKeyResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateApiKeyResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateApiKeyResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateApiKeyResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateApiKeyRequest. */
                    interface IUpdateApiKeyRequest {

                        /** The id of the api key to update. */
                        keyId?: (string|null);

                        /** The new api key specification. */
                        spec?: (temporal.api.cloud.identity.v1.IApiKeySpec|null);

                        /**
                         * The version of the api key for which this update is intended for.
                         * The latest version can be found in the GetApiKey operation response.
                         */
                        resourceVersion?: (string|null);

                        /** The id to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents an UpdateApiKeyRequest. */
                    class UpdateApiKeyRequest implements IUpdateApiKeyRequest {

                        /**
                         * Constructs a new UpdateApiKeyRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateApiKeyRequest);

                        /** The id of the api key to update. */
                        public keyId: string;

                        /** The new api key specification. */
                        public spec?: (temporal.api.cloud.identity.v1.IApiKeySpec|null);

                        /**
                         * The version of the api key for which this update is intended for.
                         * The latest version can be found in the GetApiKey operation response.
                         */
                        public resourceVersion: string;

                        /** The id to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new UpdateApiKeyRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateApiKeyRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateApiKeyRequest): temporal.api.cloud.cloudservice.v1.UpdateApiKeyRequest;

                        /**
                         * Encodes the specified UpdateApiKeyRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateApiKeyRequest.verify|verify} messages.
                         * @param message UpdateApiKeyRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateApiKeyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateApiKeyRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateApiKeyRequest.verify|verify} messages.
                         * @param message UpdateApiKeyRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateApiKeyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateApiKeyRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateApiKeyRequest
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateApiKeyRequest;

                        /**
                         * Decodes an UpdateApiKeyRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateApiKeyRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateApiKeyRequest;

                        /**
                         * Creates an UpdateApiKeyRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateApiKeyRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateApiKeyRequest;

                        /**
                         * Creates a plain object from an UpdateApiKeyRequest message. Also converts values to other types if specified.
                         * @param message UpdateApiKeyRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateApiKeyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateApiKeyRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateApiKeyRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateApiKeyResponse. */
                    interface IUpdateApiKeyResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents an UpdateApiKeyResponse. */
                    class UpdateApiKeyResponse implements IUpdateApiKeyResponse {

                        /**
                         * Constructs a new UpdateApiKeyResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateApiKeyResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new UpdateApiKeyResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateApiKeyResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateApiKeyResponse): temporal.api.cloud.cloudservice.v1.UpdateApiKeyResponse;

                        /**
                         * Encodes the specified UpdateApiKeyResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateApiKeyResponse.verify|verify} messages.
                         * @param message UpdateApiKeyResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateApiKeyResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateApiKeyResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateApiKeyResponse.verify|verify} messages.
                         * @param message UpdateApiKeyResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateApiKeyResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateApiKeyResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateApiKeyResponse
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateApiKeyResponse;

                        /**
                         * Decodes an UpdateApiKeyResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateApiKeyResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateApiKeyResponse;

                        /**
                         * Creates an UpdateApiKeyResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateApiKeyResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateApiKeyResponse;

                        /**
                         * Creates a plain object from an UpdateApiKeyResponse message. Also converts values to other types if specified.
                         * @param message UpdateApiKeyResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateApiKeyResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateApiKeyResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateApiKeyResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteApiKeyRequest. */
                    interface IDeleteApiKeyRequest {

                        /** The id of the api key to delete. */
                        keyId?: (string|null);

                        /**
                         * The version of the api key for which this delete is intended for.
                         * The latest version can be found in the GetApiKey operation response.
                         */
                        resourceVersion?: (string|null);

                        /** The id to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a DeleteApiKeyRequest. */
                    class DeleteApiKeyRequest implements IDeleteApiKeyRequest {

                        /**
                         * Constructs a new DeleteApiKeyRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteApiKeyRequest);

                        /** The id of the api key to delete. */
                        public keyId: string;

                        /**
                         * The version of the api key for which this delete is intended for.
                         * The latest version can be found in the GetApiKey operation response.
                         */
                        public resourceVersion: string;

                        /** The id to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new DeleteApiKeyRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteApiKeyRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteApiKeyRequest): temporal.api.cloud.cloudservice.v1.DeleteApiKeyRequest;

                        /**
                         * Encodes the specified DeleteApiKeyRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteApiKeyRequest.verify|verify} messages.
                         * @param message DeleteApiKeyRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteApiKeyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteApiKeyRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteApiKeyRequest.verify|verify} messages.
                         * @param message DeleteApiKeyRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteApiKeyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteApiKeyRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteApiKeyRequest
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteApiKeyRequest;

                        /**
                         * Decodes a DeleteApiKeyRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteApiKeyRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteApiKeyRequest;

                        /**
                         * Creates a DeleteApiKeyRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteApiKeyRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteApiKeyRequest;

                        /**
                         * Creates a plain object from a DeleteApiKeyRequest message. Also converts values to other types if specified.
                         * @param message DeleteApiKeyRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteApiKeyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteApiKeyRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteApiKeyRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteApiKeyResponse. */
                    interface IDeleteApiKeyResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a DeleteApiKeyResponse. */
                    class DeleteApiKeyResponse implements IDeleteApiKeyResponse {

                        /**
                         * Constructs a new DeleteApiKeyResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteApiKeyResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new DeleteApiKeyResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteApiKeyResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteApiKeyResponse): temporal.api.cloud.cloudservice.v1.DeleteApiKeyResponse;

                        /**
                         * Encodes the specified DeleteApiKeyResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteApiKeyResponse.verify|verify} messages.
                         * @param message DeleteApiKeyResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteApiKeyResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteApiKeyResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteApiKeyResponse.verify|verify} messages.
                         * @param message DeleteApiKeyResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteApiKeyResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteApiKeyResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteApiKeyResponse
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteApiKeyResponse;

                        /**
                         * Decodes a DeleteApiKeyResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteApiKeyResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteApiKeyResponse;

                        /**
                         * Creates a DeleteApiKeyResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteApiKeyResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteApiKeyResponse;

                        /**
                         * Creates a plain object from a DeleteApiKeyResponse message. Also converts values to other types if specified.
                         * @param message DeleteApiKeyResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteApiKeyResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteApiKeyResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteApiKeyResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNexusEndpointsRequest. */
                    interface IGetNexusEndpointsRequest {

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        pageSize?: (number|null);

                        /** The page token if this is continuing from another response - optional. */
                        pageToken?: (string|null);

                        /** optional, treated as an AND if specified */
                        targetNamespaceId?: (string|null);

                        /** optional, treated as an AND if specified */
                        targetTaskQueue?: (string|null);

                        /** Filter endpoints by their name - optional, treated as an AND if specified. Specifying this will result in zero or one results. */
                        name?: (string|null);
                    }

                    /** Represents a GetNexusEndpointsRequest. */
                    class GetNexusEndpointsRequest implements IGetNexusEndpointsRequest {

                        /**
                         * Constructs a new GetNexusEndpointsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointsRequest);

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        public pageSize: number;

                        /** The page token if this is continuing from another response - optional. */
                        public pageToken: string;

                        /** optional, treated as an AND if specified */
                        public targetNamespaceId: string;

                        /** optional, treated as an AND if specified */
                        public targetTaskQueue: string;

                        /** Filter endpoints by their name - optional, treated as an AND if specified. Specifying this will result in zero or one results. */
                        public name: string;

                        /**
                         * Creates a new GetNexusEndpointsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNexusEndpointsRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointsRequest): temporal.api.cloud.cloudservice.v1.GetNexusEndpointsRequest;

                        /**
                         * Encodes the specified GetNexusEndpointsRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNexusEndpointsRequest.verify|verify} messages.
                         * @param message GetNexusEndpointsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNexusEndpointsRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNexusEndpointsRequest.verify|verify} messages.
                         * @param message GetNexusEndpointsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNexusEndpointsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNexusEndpointsRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetNexusEndpointsRequest;

                        /**
                         * Decodes a GetNexusEndpointsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNexusEndpointsRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNexusEndpointsRequest;

                        /**
                         * Creates a GetNexusEndpointsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNexusEndpointsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNexusEndpointsRequest;

                        /**
                         * Creates a plain object from a GetNexusEndpointsRequest message. Also converts values to other types if specified.
                         * @param message GetNexusEndpointsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNexusEndpointsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNexusEndpointsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNexusEndpointsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNexusEndpointsResponse. */
                    interface IGetNexusEndpointsResponse {

                        /** The list of endpoints in ascending id order. */
                        endpoints?: (temporal.api.cloud.nexus.v1.IEndpoint[]|null);

                        /** The next page's token. */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a GetNexusEndpointsResponse. */
                    class GetNexusEndpointsResponse implements IGetNexusEndpointsResponse {

                        /**
                         * Constructs a new GetNexusEndpointsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointsResponse);

                        /** The list of endpoints in ascending id order. */
                        public endpoints: temporal.api.cloud.nexus.v1.IEndpoint[];

                        /** The next page's token. */
                        public nextPageToken: string;

                        /**
                         * Creates a new GetNexusEndpointsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNexusEndpointsResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointsResponse): temporal.api.cloud.cloudservice.v1.GetNexusEndpointsResponse;

                        /**
                         * Encodes the specified GetNexusEndpointsResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNexusEndpointsResponse.verify|verify} messages.
                         * @param message GetNexusEndpointsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNexusEndpointsResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNexusEndpointsResponse.verify|verify} messages.
                         * @param message GetNexusEndpointsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNexusEndpointsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNexusEndpointsResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetNexusEndpointsResponse;

                        /**
                         * Decodes a GetNexusEndpointsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNexusEndpointsResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNexusEndpointsResponse;

                        /**
                         * Creates a GetNexusEndpointsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNexusEndpointsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNexusEndpointsResponse;

                        /**
                         * Creates a plain object from a GetNexusEndpointsResponse message. Also converts values to other types if specified.
                         * @param message GetNexusEndpointsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNexusEndpointsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNexusEndpointsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNexusEndpointsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNexusEndpointRequest. */
                    interface IGetNexusEndpointRequest {

                        /** The id of the nexus endpoint to get. */
                        endpointId?: (string|null);
                    }

                    /** Represents a GetNexusEndpointRequest. */
                    class GetNexusEndpointRequest implements IGetNexusEndpointRequest {

                        /**
                         * Constructs a new GetNexusEndpointRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointRequest);

                        /** The id of the nexus endpoint to get. */
                        public endpointId: string;

                        /**
                         * Creates a new GetNexusEndpointRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNexusEndpointRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointRequest): temporal.api.cloud.cloudservice.v1.GetNexusEndpointRequest;

                        /**
                         * Encodes the specified GetNexusEndpointRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNexusEndpointRequest.verify|verify} messages.
                         * @param message GetNexusEndpointRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNexusEndpointRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNexusEndpointRequest.verify|verify} messages.
                         * @param message GetNexusEndpointRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNexusEndpointRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNexusEndpointRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetNexusEndpointRequest;

                        /**
                         * Decodes a GetNexusEndpointRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNexusEndpointRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNexusEndpointRequest;

                        /**
                         * Creates a GetNexusEndpointRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNexusEndpointRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNexusEndpointRequest;

                        /**
                         * Creates a plain object from a GetNexusEndpointRequest message. Also converts values to other types if specified.
                         * @param message GetNexusEndpointRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNexusEndpointRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNexusEndpointRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNexusEndpointRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNexusEndpointResponse. */
                    interface IGetNexusEndpointResponse {

                        /** The nexus endpoint. */
                        endpoint?: (temporal.api.cloud.nexus.v1.IEndpoint|null);
                    }

                    /** Represents a GetNexusEndpointResponse. */
                    class GetNexusEndpointResponse implements IGetNexusEndpointResponse {

                        /**
                         * Constructs a new GetNexusEndpointResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointResponse);

                        /** The nexus endpoint. */
                        public endpoint?: (temporal.api.cloud.nexus.v1.IEndpoint|null);

                        /**
                         * Creates a new GetNexusEndpointResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNexusEndpointResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointResponse): temporal.api.cloud.cloudservice.v1.GetNexusEndpointResponse;

                        /**
                         * Encodes the specified GetNexusEndpointResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNexusEndpointResponse.verify|verify} messages.
                         * @param message GetNexusEndpointResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNexusEndpointResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNexusEndpointResponse.verify|verify} messages.
                         * @param message GetNexusEndpointResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNexusEndpointResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNexusEndpointResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetNexusEndpointResponse;

                        /**
                         * Decodes a GetNexusEndpointResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNexusEndpointResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNexusEndpointResponse;

                        /**
                         * Creates a GetNexusEndpointResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNexusEndpointResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNexusEndpointResponse;

                        /**
                         * Creates a plain object from a GetNexusEndpointResponse message. Also converts values to other types if specified.
                         * @param message GetNexusEndpointResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNexusEndpointResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNexusEndpointResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNexusEndpointResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateNexusEndpointRequest. */
                    interface ICreateNexusEndpointRequest {

                        /** The spec for the nexus endpoint. */
                        spec?: (temporal.api.cloud.nexus.v1.IEndpointSpec|null);

                        /** The id to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a CreateNexusEndpointRequest. */
                    class CreateNexusEndpointRequest implements ICreateNexusEndpointRequest {

                        /**
                         * Constructs a new CreateNexusEndpointRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateNexusEndpointRequest);

                        /** The spec for the nexus endpoint. */
                        public spec?: (temporal.api.cloud.nexus.v1.IEndpointSpec|null);

                        /** The id to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new CreateNexusEndpointRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateNexusEndpointRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateNexusEndpointRequest): temporal.api.cloud.cloudservice.v1.CreateNexusEndpointRequest;

                        /**
                         * Encodes the specified CreateNexusEndpointRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNexusEndpointRequest.verify|verify} messages.
                         * @param message CreateNexusEndpointRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateNexusEndpointRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNexusEndpointRequest.verify|verify} messages.
                         * @param message CreateNexusEndpointRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateNexusEndpointRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateNexusEndpointRequest
                         * @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): temporal.api.cloud.cloudservice.v1.CreateNexusEndpointRequest;

                        /**
                         * Decodes a CreateNexusEndpointRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateNexusEndpointRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateNexusEndpointRequest;

                        /**
                         * Creates a CreateNexusEndpointRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateNexusEndpointRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateNexusEndpointRequest;

                        /**
                         * Creates a plain object from a CreateNexusEndpointRequest message. Also converts values to other types if specified.
                         * @param message CreateNexusEndpointRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateNexusEndpointRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateNexusEndpointRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateNexusEndpointRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateNexusEndpointResponse. */
                    interface ICreateNexusEndpointResponse {

                        /** The id of the endpoint that was created. */
                        endpointId?: (string|null);

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a CreateNexusEndpointResponse. */
                    class CreateNexusEndpointResponse implements ICreateNexusEndpointResponse {

                        /**
                         * Constructs a new CreateNexusEndpointResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateNexusEndpointResponse);

                        /** The id of the endpoint that was created. */
                        public endpointId: string;

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new CreateNexusEndpointResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateNexusEndpointResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateNexusEndpointResponse): temporal.api.cloud.cloudservice.v1.CreateNexusEndpointResponse;

                        /**
                         * Encodes the specified CreateNexusEndpointResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNexusEndpointResponse.verify|verify} messages.
                         * @param message CreateNexusEndpointResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateNexusEndpointResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNexusEndpointResponse.verify|verify} messages.
                         * @param message CreateNexusEndpointResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateNexusEndpointResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateNexusEndpointResponse
                         * @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): temporal.api.cloud.cloudservice.v1.CreateNexusEndpointResponse;

                        /**
                         * Decodes a CreateNexusEndpointResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateNexusEndpointResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateNexusEndpointResponse;

                        /**
                         * Creates a CreateNexusEndpointResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateNexusEndpointResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateNexusEndpointResponse;

                        /**
                         * Creates a plain object from a CreateNexusEndpointResponse message. Also converts values to other types if specified.
                         * @param message CreateNexusEndpointResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateNexusEndpointResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateNexusEndpointResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateNexusEndpointResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateNexusEndpointRequest. */
                    interface IUpdateNexusEndpointRequest {

                        /** The id of the nexus endpoint to update. */
                        endpointId?: (string|null);

                        /** The updated nexus endpoint specification. */
                        spec?: (temporal.api.cloud.nexus.v1.IEndpointSpec|null);

                        /**
                         * The version of the nexus endpoint for which this update is intended for.
                         * The latest version can be found in the GetNexusEndpoint operation response.
                         */
                        resourceVersion?: (string|null);

                        /** The id to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents an UpdateNexusEndpointRequest. */
                    class UpdateNexusEndpointRequest implements IUpdateNexusEndpointRequest {

                        /**
                         * Constructs a new UpdateNexusEndpointRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNexusEndpointRequest);

                        /** The id of the nexus endpoint to update. */
                        public endpointId: string;

                        /** The updated nexus endpoint specification. */
                        public spec?: (temporal.api.cloud.nexus.v1.IEndpointSpec|null);

                        /**
                         * The version of the nexus endpoint for which this update is intended for.
                         * The latest version can be found in the GetNexusEndpoint operation response.
                         */
                        public resourceVersion: string;

                        /** The id to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new UpdateNexusEndpointRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateNexusEndpointRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNexusEndpointRequest): temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointRequest;

                        /**
                         * Encodes the specified UpdateNexusEndpointRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointRequest.verify|verify} messages.
                         * @param message UpdateNexusEndpointRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateNexusEndpointRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointRequest.verify|verify} messages.
                         * @param message UpdateNexusEndpointRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateNexusEndpointRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateNexusEndpointRequest
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointRequest;

                        /**
                         * Decodes an UpdateNexusEndpointRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateNexusEndpointRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointRequest;

                        /**
                         * Creates an UpdateNexusEndpointRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateNexusEndpointRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointRequest;

                        /**
                         * Creates a plain object from an UpdateNexusEndpointRequest message. Also converts values to other types if specified.
                         * @param message UpdateNexusEndpointRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateNexusEndpointRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateNexusEndpointRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateNexusEndpointResponse. */
                    interface IUpdateNexusEndpointResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents an UpdateNexusEndpointResponse. */
                    class UpdateNexusEndpointResponse implements IUpdateNexusEndpointResponse {

                        /**
                         * Constructs a new UpdateNexusEndpointResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNexusEndpointResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new UpdateNexusEndpointResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateNexusEndpointResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNexusEndpointResponse): temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointResponse;

                        /**
                         * Encodes the specified UpdateNexusEndpointResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointResponse.verify|verify} messages.
                         * @param message UpdateNexusEndpointResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateNexusEndpointResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointResponse.verify|verify} messages.
                         * @param message UpdateNexusEndpointResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateNexusEndpointResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateNexusEndpointResponse
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointResponse;

                        /**
                         * Decodes an UpdateNexusEndpointResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateNexusEndpointResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointResponse;

                        /**
                         * Creates an UpdateNexusEndpointResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateNexusEndpointResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointResponse;

                        /**
                         * Creates a plain object from an UpdateNexusEndpointResponse message. Also converts values to other types if specified.
                         * @param message UpdateNexusEndpointResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateNexusEndpointResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateNexusEndpointResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateNexusEndpointResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteNexusEndpointRequest. */
                    interface IDeleteNexusEndpointRequest {

                        /** The id of the nexus endpoint to delete. */
                        endpointId?: (string|null);

                        /**
                         * The version of the endpoint for which this delete is intended for.
                         * The latest version can be found in the GetNexusEndpoint operation response.
                         */
                        resourceVersion?: (string|null);

                        /** The id to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a DeleteNexusEndpointRequest. */
                    class DeleteNexusEndpointRequest implements IDeleteNexusEndpointRequest {

                        /**
                         * Constructs a new DeleteNexusEndpointRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNexusEndpointRequest);

                        /** The id of the nexus endpoint to delete. */
                        public endpointId: string;

                        /**
                         * The version of the endpoint for which this delete is intended for.
                         * The latest version can be found in the GetNexusEndpoint operation response.
                         */
                        public resourceVersion: string;

                        /** The id to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new DeleteNexusEndpointRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteNexusEndpointRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNexusEndpointRequest): temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointRequest;

                        /**
                         * Encodes the specified DeleteNexusEndpointRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointRequest.verify|verify} messages.
                         * @param message DeleteNexusEndpointRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteNexusEndpointRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointRequest.verify|verify} messages.
                         * @param message DeleteNexusEndpointRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteNexusEndpointRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteNexusEndpointRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteNexusEndpointRequest
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointRequest;

                        /**
                         * Decodes a DeleteNexusEndpointRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteNexusEndpointRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointRequest;

                        /**
                         * Creates a DeleteNexusEndpointRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteNexusEndpointRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointRequest;

                        /**
                         * Creates a plain object from a DeleteNexusEndpointRequest message. Also converts values to other types if specified.
                         * @param message DeleteNexusEndpointRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteNexusEndpointRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteNexusEndpointRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteNexusEndpointResponse. */
                    interface IDeleteNexusEndpointResponse {

                        /** The async operation */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a DeleteNexusEndpointResponse. */
                    class DeleteNexusEndpointResponse implements IDeleteNexusEndpointResponse {

                        /**
                         * Constructs a new DeleteNexusEndpointResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNexusEndpointResponse);

                        /** The async operation */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new DeleteNexusEndpointResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteNexusEndpointResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNexusEndpointResponse): temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointResponse;

                        /**
                         * Encodes the specified DeleteNexusEndpointResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointResponse.verify|verify} messages.
                         * @param message DeleteNexusEndpointResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteNexusEndpointResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointResponse.verify|verify} messages.
                         * @param message DeleteNexusEndpointResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteNexusEndpointResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteNexusEndpointResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteNexusEndpointResponse
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointResponse;

                        /**
                         * Decodes a DeleteNexusEndpointResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteNexusEndpointResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointResponse;

                        /**
                         * Creates a DeleteNexusEndpointResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteNexusEndpointResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointResponse;

                        /**
                         * Creates a plain object from a DeleteNexusEndpointResponse message. Also converts values to other types if specified.
                         * @param message DeleteNexusEndpointResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteNexusEndpointResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteNexusEndpointResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteNexusEndpointResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetUserGroupsRequest. */
                    interface IGetUserGroupsRequest {

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        pageSize?: (number|null);

                        /** The page token if this is continuing from another response - optional. */
                        pageToken?: (string|null);

                        /** Filter groups by the namespace they have access to - optional. */
                        namespace?: (string|null);

                        /** Filter groups by the display name - optional. */
                        displayName?: (string|null);

                        /** Filter groups by the google group specification - optional. */
                        googleGroup?: (temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.IGoogleGroupFilter|null);

                        /** Filter groups by the SCIM group specification - optional. */
                        scimGroup?: (temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.ISCIMGroupFilter|null);
                    }

                    /** Represents a GetUserGroupsRequest. */
                    class GetUserGroupsRequest implements IGetUserGroupsRequest {

                        /**
                         * Constructs a new GetUserGroupsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupsRequest);

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        public pageSize: number;

                        /** The page token if this is continuing from another response - optional. */
                        public pageToken: string;

                        /** Filter groups by the namespace they have access to - optional. */
                        public namespace: string;

                        /** Filter groups by the display name - optional. */
                        public displayName: string;

                        /** Filter groups by the google group specification - optional. */
                        public googleGroup?: (temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.IGoogleGroupFilter|null);

                        /** Filter groups by the SCIM group specification - optional. */
                        public scimGroup?: (temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.ISCIMGroupFilter|null);

                        /**
                         * Creates a new GetUserGroupsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUserGroupsRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupsRequest): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest;

                        /**
                         * Encodes the specified GetUserGroupsRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.verify|verify} messages.
                         * @param message GetUserGroupsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUserGroupsRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.verify|verify} messages.
                         * @param message GetUserGroupsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUserGroupsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUserGroupsRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest;

                        /**
                         * Decodes a GetUserGroupsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUserGroupsRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest;

                        /**
                         * Creates a GetUserGroupsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUserGroupsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest;

                        /**
                         * Creates a plain object from a GetUserGroupsRequest message. Also converts values to other types if specified.
                         * @param message GetUserGroupsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUserGroupsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUserGroupsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace GetUserGroupsRequest {

                        /** Properties of a GoogleGroupFilter. */
                        interface IGoogleGroupFilter {

                            /** Filter groups by the google group email - optional. */
                            emailAddress?: (string|null);
                        }

                        /** Represents a GoogleGroupFilter. */
                        class GoogleGroupFilter implements IGoogleGroupFilter {

                            /**
                             * Constructs a new GoogleGroupFilter.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.IGoogleGroupFilter);

                            /** Filter groups by the google group email - optional. */
                            public emailAddress: string;

                            /**
                             * Creates a new GoogleGroupFilter instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns GoogleGroupFilter instance
                             */
                            public static create(properties?: temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.IGoogleGroupFilter): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.GoogleGroupFilter;

                            /**
                             * Encodes the specified GoogleGroupFilter message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.GoogleGroupFilter.verify|verify} messages.
                             * @param message GoogleGroupFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.IGoogleGroupFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified GoogleGroupFilter message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.GoogleGroupFilter.verify|verify} messages.
                             * @param message GoogleGroupFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.IGoogleGroupFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a GoogleGroupFilter message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns GoogleGroupFilter
                             * @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): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.GoogleGroupFilter;

                            /**
                             * Decodes a GoogleGroupFilter message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns GoogleGroupFilter
                             * @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)): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.GoogleGroupFilter;

                            /**
                             * Creates a GoogleGroupFilter message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns GoogleGroupFilter
                             */
                            public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.GoogleGroupFilter;

                            /**
                             * Creates a plain object from a GoogleGroupFilter message. Also converts values to other types if specified.
                             * @param message GoogleGroupFilter
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.GoogleGroupFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this GoogleGroupFilter to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for GoogleGroupFilter
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a SCIMGroupFilter. */
                        interface ISCIMGroupFilter {

                            /** Filter groups by the SCIM IDP id - optional. */
                            idpId?: (string|null);
                        }

                        /** Represents a SCIMGroupFilter. */
                        class SCIMGroupFilter implements ISCIMGroupFilter {

                            /**
                             * Constructs a new SCIMGroupFilter.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.ISCIMGroupFilter);

                            /** Filter groups by the SCIM IDP id - optional. */
                            public idpId: string;

                            /**
                             * Creates a new SCIMGroupFilter instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SCIMGroupFilter instance
                             */
                            public static create(properties?: temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.ISCIMGroupFilter): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.SCIMGroupFilter;

                            /**
                             * Encodes the specified SCIMGroupFilter message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.SCIMGroupFilter.verify|verify} messages.
                             * @param message SCIMGroupFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.ISCIMGroupFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SCIMGroupFilter message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.SCIMGroupFilter.verify|verify} messages.
                             * @param message SCIMGroupFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.ISCIMGroupFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SCIMGroupFilter message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SCIMGroupFilter
                             * @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): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.SCIMGroupFilter;

                            /**
                             * Decodes a SCIMGroupFilter message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SCIMGroupFilter
                             * @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)): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.SCIMGroupFilter;

                            /**
                             * Creates a SCIMGroupFilter message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SCIMGroupFilter
                             */
                            public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.SCIMGroupFilter;

                            /**
                             * Creates a plain object from a SCIMGroupFilter message. Also converts values to other types if specified.
                             * @param message SCIMGroupFilter
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUserGroupsRequest.SCIMGroupFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SCIMGroupFilter to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SCIMGroupFilter
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a GetUserGroupsResponse. */
                    interface IGetUserGroupsResponse {

                        /** The list of groups in ascending name order. */
                        groups?: (temporal.api.cloud.identity.v1.IUserGroup[]|null);

                        /** The next page's token. */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a GetUserGroupsResponse. */
                    class GetUserGroupsResponse implements IGetUserGroupsResponse {

                        /**
                         * Constructs a new GetUserGroupsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupsResponse);

                        /** The list of groups in ascending name order. */
                        public groups: temporal.api.cloud.identity.v1.IUserGroup[];

                        /** The next page's token. */
                        public nextPageToken: string;

                        /**
                         * Creates a new GetUserGroupsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUserGroupsResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupsResponse): temporal.api.cloud.cloudservice.v1.GetUserGroupsResponse;

                        /**
                         * Encodes the specified GetUserGroupsResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupsResponse.verify|verify} messages.
                         * @param message GetUserGroupsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUserGroupsResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupsResponse.verify|verify} messages.
                         * @param message GetUserGroupsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUserGroupsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUserGroupsResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetUserGroupsResponse;

                        /**
                         * Decodes a GetUserGroupsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUserGroupsResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUserGroupsResponse;

                        /**
                         * Creates a GetUserGroupsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUserGroupsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUserGroupsResponse;

                        /**
                         * Creates a plain object from a GetUserGroupsResponse message. Also converts values to other types if specified.
                         * @param message GetUserGroupsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUserGroupsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUserGroupsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUserGroupsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetUserGroupRequest. */
                    interface IGetUserGroupRequest {

                        /** The id of the group to get. */
                        groupId?: (string|null);
                    }

                    /** Represents a GetUserGroupRequest. */
                    class GetUserGroupRequest implements IGetUserGroupRequest {

                        /**
                         * Constructs a new GetUserGroupRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupRequest);

                        /** The id of the group to get. */
                        public groupId: string;

                        /**
                         * Creates a new GetUserGroupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUserGroupRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupRequest): temporal.api.cloud.cloudservice.v1.GetUserGroupRequest;

                        /**
                         * Encodes the specified GetUserGroupRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupRequest.verify|verify} messages.
                         * @param message GetUserGroupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUserGroupRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupRequest.verify|verify} messages.
                         * @param message GetUserGroupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUserGroupRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUserGroupRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetUserGroupRequest;

                        /**
                         * Decodes a GetUserGroupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUserGroupRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUserGroupRequest;

                        /**
                         * Creates a GetUserGroupRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUserGroupRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUserGroupRequest;

                        /**
                         * Creates a plain object from a GetUserGroupRequest message. Also converts values to other types if specified.
                         * @param message GetUserGroupRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUserGroupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUserGroupRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUserGroupRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetUserGroupResponse. */
                    interface IGetUserGroupResponse {

                        /** The group. */
                        group?: (temporal.api.cloud.identity.v1.IUserGroup|null);
                    }

                    /** Represents a GetUserGroupResponse. */
                    class GetUserGroupResponse implements IGetUserGroupResponse {

                        /**
                         * Constructs a new GetUserGroupResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupResponse);

                        /** The group. */
                        public group?: (temporal.api.cloud.identity.v1.IUserGroup|null);

                        /**
                         * Creates a new GetUserGroupResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUserGroupResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupResponse): temporal.api.cloud.cloudservice.v1.GetUserGroupResponse;

                        /**
                         * Encodes the specified GetUserGroupResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupResponse.verify|verify} messages.
                         * @param message GetUserGroupResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUserGroupResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupResponse.verify|verify} messages.
                         * @param message GetUserGroupResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUserGroupResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUserGroupResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetUserGroupResponse;

                        /**
                         * Decodes a GetUserGroupResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUserGroupResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUserGroupResponse;

                        /**
                         * Creates a GetUserGroupResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUserGroupResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUserGroupResponse;

                        /**
                         * Creates a plain object from a GetUserGroupResponse message. Also converts values to other types if specified.
                         * @param message GetUserGroupResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUserGroupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUserGroupResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUserGroupResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateUserGroupRequest. */
                    interface ICreateUserGroupRequest {

                        /** The spec for the group to create. */
                        spec?: (temporal.api.cloud.identity.v1.IUserGroupSpec|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a CreateUserGroupRequest. */
                    class CreateUserGroupRequest implements ICreateUserGroupRequest {

                        /**
                         * Constructs a new CreateUserGroupRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateUserGroupRequest);

                        /** The spec for the group to create. */
                        public spec?: (temporal.api.cloud.identity.v1.IUserGroupSpec|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * Creates a new CreateUserGroupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateUserGroupRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateUserGroupRequest): temporal.api.cloud.cloudservice.v1.CreateUserGroupRequest;

                        /**
                         * Encodes the specified CreateUserGroupRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateUserGroupRequest.verify|verify} messages.
                         * @param message CreateUserGroupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateUserGroupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateUserGroupRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateUserGroupRequest.verify|verify} messages.
                         * @param message CreateUserGroupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateUserGroupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateUserGroupRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateUserGroupRequest
                         * @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): temporal.api.cloud.cloudservice.v1.CreateUserGroupRequest;

                        /**
                         * Decodes a CreateUserGroupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateUserGroupRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateUserGroupRequest;

                        /**
                         * Creates a CreateUserGroupRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateUserGroupRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateUserGroupRequest;

                        /**
                         * Creates a plain object from a CreateUserGroupRequest message. Also converts values to other types if specified.
                         * @param message CreateUserGroupRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateUserGroupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateUserGroupRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateUserGroupRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateUserGroupResponse. */
                    interface ICreateUserGroupResponse {

                        /** The id of the group that was created. */
                        groupId?: (string|null);

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a CreateUserGroupResponse. */
                    class CreateUserGroupResponse implements ICreateUserGroupResponse {

                        /**
                         * Constructs a new CreateUserGroupResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateUserGroupResponse);

                        /** The id of the group that was created. */
                        public groupId: string;

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new CreateUserGroupResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateUserGroupResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateUserGroupResponse): temporal.api.cloud.cloudservice.v1.CreateUserGroupResponse;

                        /**
                         * Encodes the specified CreateUserGroupResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateUserGroupResponse.verify|verify} messages.
                         * @param message CreateUserGroupResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateUserGroupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateUserGroupResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateUserGroupResponse.verify|verify} messages.
                         * @param message CreateUserGroupResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateUserGroupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateUserGroupResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateUserGroupResponse
                         * @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): temporal.api.cloud.cloudservice.v1.CreateUserGroupResponse;

                        /**
                         * Decodes a CreateUserGroupResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateUserGroupResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateUserGroupResponse;

                        /**
                         * Creates a CreateUserGroupResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateUserGroupResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateUserGroupResponse;

                        /**
                         * Creates a plain object from a CreateUserGroupResponse message. Also converts values to other types if specified.
                         * @param message CreateUserGroupResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateUserGroupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateUserGroupResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateUserGroupResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateUserGroupRequest. */
                    interface IUpdateUserGroupRequest {

                        /** The id of the group to update. */
                        groupId?: (string|null);

                        /** The new group specification. */
                        spec?: (temporal.api.cloud.identity.v1.IUserGroupSpec|null);

                        /**
                         * The version of the group for which this update is intended for.
                         * The latest version can be found in the GetGroup operation response.
                         */
                        resourceVersion?: (string|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents an UpdateUserGroupRequest. */
                    class UpdateUserGroupRequest implements IUpdateUserGroupRequest {

                        /**
                         * Constructs a new UpdateUserGroupRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateUserGroupRequest);

                        /** The id of the group to update. */
                        public groupId: string;

                        /** The new group specification. */
                        public spec?: (temporal.api.cloud.identity.v1.IUserGroupSpec|null);

                        /**
                         * The version of the group for which this update is intended for.
                         * The latest version can be found in the GetGroup operation response.
                         */
                        public resourceVersion: string;

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * Creates a new UpdateUserGroupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateUserGroupRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateUserGroupRequest): temporal.api.cloud.cloudservice.v1.UpdateUserGroupRequest;

                        /**
                         * Encodes the specified UpdateUserGroupRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateUserGroupRequest.verify|verify} messages.
                         * @param message UpdateUserGroupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateUserGroupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateUserGroupRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateUserGroupRequest.verify|verify} messages.
                         * @param message UpdateUserGroupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateUserGroupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateUserGroupRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateUserGroupRequest
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateUserGroupRequest;

                        /**
                         * Decodes an UpdateUserGroupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateUserGroupRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateUserGroupRequest;

                        /**
                         * Creates an UpdateUserGroupRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateUserGroupRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateUserGroupRequest;

                        /**
                         * Creates a plain object from an UpdateUserGroupRequest message. Also converts values to other types if specified.
                         * @param message UpdateUserGroupRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateUserGroupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateUserGroupRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateUserGroupRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateUserGroupResponse. */
                    interface IUpdateUserGroupResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents an UpdateUserGroupResponse. */
                    class UpdateUserGroupResponse implements IUpdateUserGroupResponse {

                        /**
                         * Constructs a new UpdateUserGroupResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateUserGroupResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new UpdateUserGroupResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateUserGroupResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateUserGroupResponse): temporal.api.cloud.cloudservice.v1.UpdateUserGroupResponse;

                        /**
                         * Encodes the specified UpdateUserGroupResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateUserGroupResponse.verify|verify} messages.
                         * @param message UpdateUserGroupResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateUserGroupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateUserGroupResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateUserGroupResponse.verify|verify} messages.
                         * @param message UpdateUserGroupResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateUserGroupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateUserGroupResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateUserGroupResponse
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateUserGroupResponse;

                        /**
                         * Decodes an UpdateUserGroupResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateUserGroupResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateUserGroupResponse;

                        /**
                         * Creates an UpdateUserGroupResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateUserGroupResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateUserGroupResponse;

                        /**
                         * Creates a plain object from an UpdateUserGroupResponse message. Also converts values to other types if specified.
                         * @param message UpdateUserGroupResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateUserGroupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateUserGroupResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateUserGroupResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteUserGroupRequest. */
                    interface IDeleteUserGroupRequest {

                        /** The id of the group to delete. */
                        groupId?: (string|null);

                        /**
                         * The version of the group for which this delete is intended for.
                         * The latest version can be found in the GetGroup operation response.
                         */
                        resourceVersion?: (string|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a DeleteUserGroupRequest. */
                    class DeleteUserGroupRequest implements IDeleteUserGroupRequest {

                        /**
                         * Constructs a new DeleteUserGroupRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteUserGroupRequest);

                        /** The id of the group to delete. */
                        public groupId: string;

                        /**
                         * The version of the group for which this delete is intended for.
                         * The latest version can be found in the GetGroup operation response.
                         */
                        public resourceVersion: string;

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * Creates a new DeleteUserGroupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteUserGroupRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteUserGroupRequest): temporal.api.cloud.cloudservice.v1.DeleteUserGroupRequest;

                        /**
                         * Encodes the specified DeleteUserGroupRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteUserGroupRequest.verify|verify} messages.
                         * @param message DeleteUserGroupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteUserGroupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteUserGroupRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteUserGroupRequest.verify|verify} messages.
                         * @param message DeleteUserGroupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteUserGroupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteUserGroupRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteUserGroupRequest
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteUserGroupRequest;

                        /**
                         * Decodes a DeleteUserGroupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteUserGroupRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteUserGroupRequest;

                        /**
                         * Creates a DeleteUserGroupRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteUserGroupRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteUserGroupRequest;

                        /**
                         * Creates a plain object from a DeleteUserGroupRequest message. Also converts values to other types if specified.
                         * @param message DeleteUserGroupRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteUserGroupRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteUserGroupRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteUserGroupRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteUserGroupResponse. */
                    interface IDeleteUserGroupResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a DeleteUserGroupResponse. */
                    class DeleteUserGroupResponse implements IDeleteUserGroupResponse {

                        /**
                         * Constructs a new DeleteUserGroupResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteUserGroupResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new DeleteUserGroupResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteUserGroupResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteUserGroupResponse): temporal.api.cloud.cloudservice.v1.DeleteUserGroupResponse;

                        /**
                         * Encodes the specified DeleteUserGroupResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteUserGroupResponse.verify|verify} messages.
                         * @param message DeleteUserGroupResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteUserGroupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteUserGroupResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteUserGroupResponse.verify|verify} messages.
                         * @param message DeleteUserGroupResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteUserGroupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteUserGroupResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteUserGroupResponse
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteUserGroupResponse;

                        /**
                         * Decodes a DeleteUserGroupResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteUserGroupResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteUserGroupResponse;

                        /**
                         * Creates a DeleteUserGroupResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteUserGroupResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteUserGroupResponse;

                        /**
                         * Creates a plain object from a DeleteUserGroupResponse message. Also converts values to other types if specified.
                         * @param message DeleteUserGroupResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteUserGroupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteUserGroupResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteUserGroupResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SetUserGroupNamespaceAccessRequest. */
                    interface ISetUserGroupNamespaceAccessRequest {

                        /** The namespace to set permissions for. */
                        namespace?: (string|null);

                        /** The id of the group to set permissions for. */
                        groupId?: (string|null);

                        /** The namespace access to assign the group. If left empty, the group will be removed from the namespace access. */
                        access?: (temporal.api.cloud.identity.v1.INamespaceAccess|null);

                        /**
                         * The version of the group for which this update is intended for.
                         * The latest version can be found in the GetGroup operation response.
                         */
                        resourceVersion?: (string|null);

                        /** The id to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a SetUserGroupNamespaceAccessRequest. */
                    class SetUserGroupNamespaceAccessRequest implements ISetUserGroupNamespaceAccessRequest {

                        /**
                         * Constructs a new SetUserGroupNamespaceAccessRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ISetUserGroupNamespaceAccessRequest);

                        /** The namespace to set permissions for. */
                        public namespace: string;

                        /** The id of the group to set permissions for. */
                        public groupId: string;

                        /** The namespace access to assign the group. If left empty, the group will be removed from the namespace access. */
                        public access?: (temporal.api.cloud.identity.v1.INamespaceAccess|null);

                        /**
                         * The version of the group for which this update is intended for.
                         * The latest version can be found in the GetGroup operation response.
                         */
                        public resourceVersion: string;

                        /** The id to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new SetUserGroupNamespaceAccessRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SetUserGroupNamespaceAccessRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ISetUserGroupNamespaceAccessRequest): temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessRequest;

                        /**
                         * Encodes the specified SetUserGroupNamespaceAccessRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessRequest.verify|verify} messages.
                         * @param message SetUserGroupNamespaceAccessRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ISetUserGroupNamespaceAccessRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SetUserGroupNamespaceAccessRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessRequest.verify|verify} messages.
                         * @param message SetUserGroupNamespaceAccessRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ISetUserGroupNamespaceAccessRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SetUserGroupNamespaceAccessRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SetUserGroupNamespaceAccessRequest
                         * @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): temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessRequest;

                        /**
                         * Decodes a SetUserGroupNamespaceAccessRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SetUserGroupNamespaceAccessRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessRequest;

                        /**
                         * Creates a SetUserGroupNamespaceAccessRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SetUserGroupNamespaceAccessRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessRequest;

                        /**
                         * Creates a plain object from a SetUserGroupNamespaceAccessRequest message. Also converts values to other types if specified.
                         * @param message SetUserGroupNamespaceAccessRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SetUserGroupNamespaceAccessRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SetUserGroupNamespaceAccessRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SetUserGroupNamespaceAccessResponse. */
                    interface ISetUserGroupNamespaceAccessResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a SetUserGroupNamespaceAccessResponse. */
                    class SetUserGroupNamespaceAccessResponse implements ISetUserGroupNamespaceAccessResponse {

                        /**
                         * Constructs a new SetUserGroupNamespaceAccessResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ISetUserGroupNamespaceAccessResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new SetUserGroupNamespaceAccessResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SetUserGroupNamespaceAccessResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ISetUserGroupNamespaceAccessResponse): temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessResponse;

                        /**
                         * Encodes the specified SetUserGroupNamespaceAccessResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessResponse.verify|verify} messages.
                         * @param message SetUserGroupNamespaceAccessResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ISetUserGroupNamespaceAccessResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SetUserGroupNamespaceAccessResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessResponse.verify|verify} messages.
                         * @param message SetUserGroupNamespaceAccessResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ISetUserGroupNamespaceAccessResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SetUserGroupNamespaceAccessResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SetUserGroupNamespaceAccessResponse
                         * @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): temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessResponse;

                        /**
                         * Decodes a SetUserGroupNamespaceAccessResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SetUserGroupNamespaceAccessResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessResponse;

                        /**
                         * Creates a SetUserGroupNamespaceAccessResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SetUserGroupNamespaceAccessResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessResponse;

                        /**
                         * Creates a plain object from a SetUserGroupNamespaceAccessResponse message. Also converts values to other types if specified.
                         * @param message SetUserGroupNamespaceAccessResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.SetUserGroupNamespaceAccessResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SetUserGroupNamespaceAccessResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SetUserGroupNamespaceAccessResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AddUserGroupMemberRequest. */
                    interface IAddUserGroupMemberRequest {

                        /** The id of the group to add the member for. */
                        groupId?: (string|null);

                        /** The member id to add to the group. */
                        memberId?: (temporal.api.cloud.identity.v1.IUserGroupMemberId|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents an AddUserGroupMemberRequest. */
                    class AddUserGroupMemberRequest implements IAddUserGroupMemberRequest {

                        /**
                         * Constructs a new AddUserGroupMemberRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IAddUserGroupMemberRequest);

                        /** The id of the group to add the member for. */
                        public groupId: string;

                        /** The member id to add to the group. */
                        public memberId?: (temporal.api.cloud.identity.v1.IUserGroupMemberId|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * Creates a new AddUserGroupMemberRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddUserGroupMemberRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IAddUserGroupMemberRequest): temporal.api.cloud.cloudservice.v1.AddUserGroupMemberRequest;

                        /**
                         * Encodes the specified AddUserGroupMemberRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.AddUserGroupMemberRequest.verify|verify} messages.
                         * @param message AddUserGroupMemberRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IAddUserGroupMemberRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddUserGroupMemberRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.AddUserGroupMemberRequest.verify|verify} messages.
                         * @param message AddUserGroupMemberRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IAddUserGroupMemberRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddUserGroupMemberRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddUserGroupMemberRequest
                         * @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): temporal.api.cloud.cloudservice.v1.AddUserGroupMemberRequest;

                        /**
                         * Decodes an AddUserGroupMemberRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddUserGroupMemberRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.AddUserGroupMemberRequest;

                        /**
                         * Creates an AddUserGroupMemberRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AddUserGroupMemberRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.AddUserGroupMemberRequest;

                        /**
                         * Creates a plain object from an AddUserGroupMemberRequest message. Also converts values to other types if specified.
                         * @param message AddUserGroupMemberRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.AddUserGroupMemberRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddUserGroupMemberRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AddUserGroupMemberRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AddUserGroupMemberResponse. */
                    interface IAddUserGroupMemberResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents an AddUserGroupMemberResponse. */
                    class AddUserGroupMemberResponse implements IAddUserGroupMemberResponse {

                        /**
                         * Constructs a new AddUserGroupMemberResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IAddUserGroupMemberResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new AddUserGroupMemberResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddUserGroupMemberResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IAddUserGroupMemberResponse): temporal.api.cloud.cloudservice.v1.AddUserGroupMemberResponse;

                        /**
                         * Encodes the specified AddUserGroupMemberResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.AddUserGroupMemberResponse.verify|verify} messages.
                         * @param message AddUserGroupMemberResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IAddUserGroupMemberResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddUserGroupMemberResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.AddUserGroupMemberResponse.verify|verify} messages.
                         * @param message AddUserGroupMemberResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IAddUserGroupMemberResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddUserGroupMemberResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddUserGroupMemberResponse
                         * @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): temporal.api.cloud.cloudservice.v1.AddUserGroupMemberResponse;

                        /**
                         * Decodes an AddUserGroupMemberResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddUserGroupMemberResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.AddUserGroupMemberResponse;

                        /**
                         * Creates an AddUserGroupMemberResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AddUserGroupMemberResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.AddUserGroupMemberResponse;

                        /**
                         * Creates a plain object from an AddUserGroupMemberResponse message. Also converts values to other types if specified.
                         * @param message AddUserGroupMemberResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.AddUserGroupMemberResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddUserGroupMemberResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AddUserGroupMemberResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemoveUserGroupMemberRequest. */
                    interface IRemoveUserGroupMemberRequest {

                        /** The id of the group to add the member for. */
                        groupId?: (string|null);

                        /** The member id to add to the group. */
                        memberId?: (temporal.api.cloud.identity.v1.IUserGroupMemberId|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a RemoveUserGroupMemberRequest. */
                    class RemoveUserGroupMemberRequest implements IRemoveUserGroupMemberRequest {

                        /**
                         * Constructs a new RemoveUserGroupMemberRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IRemoveUserGroupMemberRequest);

                        /** The id of the group to add the member for. */
                        public groupId: string;

                        /** The member id to add to the group. */
                        public memberId?: (temporal.api.cloud.identity.v1.IUserGroupMemberId|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * Creates a new RemoveUserGroupMemberRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveUserGroupMemberRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IRemoveUserGroupMemberRequest): temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberRequest;

                        /**
                         * Encodes the specified RemoveUserGroupMemberRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberRequest.verify|verify} messages.
                         * @param message RemoveUserGroupMemberRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IRemoveUserGroupMemberRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveUserGroupMemberRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberRequest.verify|verify} messages.
                         * @param message RemoveUserGroupMemberRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IRemoveUserGroupMemberRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveUserGroupMemberRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveUserGroupMemberRequest
                         * @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): temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberRequest;

                        /**
                         * Decodes a RemoveUserGroupMemberRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveUserGroupMemberRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberRequest;

                        /**
                         * Creates a RemoveUserGroupMemberRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveUserGroupMemberRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberRequest;

                        /**
                         * Creates a plain object from a RemoveUserGroupMemberRequest message. Also converts values to other types if specified.
                         * @param message RemoveUserGroupMemberRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveUserGroupMemberRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveUserGroupMemberRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RemoveUserGroupMemberResponse. */
                    interface IRemoveUserGroupMemberResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a RemoveUserGroupMemberResponse. */
                    class RemoveUserGroupMemberResponse implements IRemoveUserGroupMemberResponse {

                        /**
                         * Constructs a new RemoveUserGroupMemberResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IRemoveUserGroupMemberResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new RemoveUserGroupMemberResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveUserGroupMemberResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IRemoveUserGroupMemberResponse): temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberResponse;

                        /**
                         * Encodes the specified RemoveUserGroupMemberResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberResponse.verify|verify} messages.
                         * @param message RemoveUserGroupMemberResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IRemoveUserGroupMemberResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveUserGroupMemberResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberResponse.verify|verify} messages.
                         * @param message RemoveUserGroupMemberResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IRemoveUserGroupMemberResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveUserGroupMemberResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveUserGroupMemberResponse
                         * @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): temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberResponse;

                        /**
                         * Decodes a RemoveUserGroupMemberResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveUserGroupMemberResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberResponse;

                        /**
                         * Creates a RemoveUserGroupMemberResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveUserGroupMemberResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberResponse;

                        /**
                         * Creates a plain object from a RemoveUserGroupMemberResponse message. Also converts values to other types if specified.
                         * @param message RemoveUserGroupMemberResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.RemoveUserGroupMemberResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveUserGroupMemberResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveUserGroupMemberResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetUserGroupMembersRequest. */
                    interface IGetUserGroupMembersRequest {

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        pageSize?: (number|null);

                        /** The page token if this is continuing from another response - optional. */
                        pageToken?: (string|null);

                        /** The group id to list members of. */
                        groupId?: (string|null);
                    }

                    /** Represents a GetUserGroupMembersRequest. */
                    class GetUserGroupMembersRequest implements IGetUserGroupMembersRequest {

                        /**
                         * Constructs a new GetUserGroupMembersRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupMembersRequest);

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        public pageSize: number;

                        /** The page token if this is continuing from another response - optional. */
                        public pageToken: string;

                        /** The group id to list members of. */
                        public groupId: string;

                        /**
                         * Creates a new GetUserGroupMembersRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUserGroupMembersRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupMembersRequest): temporal.api.cloud.cloudservice.v1.GetUserGroupMembersRequest;

                        /**
                         * Encodes the specified GetUserGroupMembersRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupMembersRequest.verify|verify} messages.
                         * @param message GetUserGroupMembersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupMembersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUserGroupMembersRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupMembersRequest.verify|verify} messages.
                         * @param message GetUserGroupMembersRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupMembersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUserGroupMembersRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUserGroupMembersRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetUserGroupMembersRequest;

                        /**
                         * Decodes a GetUserGroupMembersRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUserGroupMembersRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUserGroupMembersRequest;

                        /**
                         * Creates a GetUserGroupMembersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUserGroupMembersRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUserGroupMembersRequest;

                        /**
                         * Creates a plain object from a GetUserGroupMembersRequest message. Also converts values to other types if specified.
                         * @param message GetUserGroupMembersRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUserGroupMembersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUserGroupMembersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUserGroupMembersRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetUserGroupMembersResponse. */
                    interface IGetUserGroupMembersResponse {

                        /** The list of group members */
                        members?: (temporal.api.cloud.identity.v1.IUserGroupMember[]|null);

                        /** The next page's token. */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a GetUserGroupMembersResponse. */
                    class GetUserGroupMembersResponse implements IGetUserGroupMembersResponse {

                        /**
                         * Constructs a new GetUserGroupMembersResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupMembersResponse);

                        /** The list of group members */
                        public members: temporal.api.cloud.identity.v1.IUserGroupMember[];

                        /** The next page's token. */
                        public nextPageToken: string;

                        /**
                         * Creates a new GetUserGroupMembersResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUserGroupMembersResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUserGroupMembersResponse): temporal.api.cloud.cloudservice.v1.GetUserGroupMembersResponse;

                        /**
                         * Encodes the specified GetUserGroupMembersResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupMembersResponse.verify|verify} messages.
                         * @param message GetUserGroupMembersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupMembersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUserGroupMembersResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUserGroupMembersResponse.verify|verify} messages.
                         * @param message GetUserGroupMembersResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUserGroupMembersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUserGroupMembersResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUserGroupMembersResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetUserGroupMembersResponse;

                        /**
                         * Decodes a GetUserGroupMembersResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUserGroupMembersResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUserGroupMembersResponse;

                        /**
                         * Creates a GetUserGroupMembersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUserGroupMembersResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUserGroupMembersResponse;

                        /**
                         * Creates a plain object from a GetUserGroupMembersResponse message. Also converts values to other types if specified.
                         * @param message GetUserGroupMembersResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUserGroupMembersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUserGroupMembersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUserGroupMembersResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateServiceAccountRequest. */
                    interface ICreateServiceAccountRequest {

                        /** The spec of the service account to create. */
                        spec?: (temporal.api.cloud.identity.v1.IServiceAccountSpec|null);

                        /** The ID to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a CreateServiceAccountRequest. */
                    class CreateServiceAccountRequest implements ICreateServiceAccountRequest {

                        /**
                         * Constructs a new CreateServiceAccountRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateServiceAccountRequest);

                        /** The spec of the service account to create. */
                        public spec?: (temporal.api.cloud.identity.v1.IServiceAccountSpec|null);

                        /** The ID to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new CreateServiceAccountRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateServiceAccountRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateServiceAccountRequest): temporal.api.cloud.cloudservice.v1.CreateServiceAccountRequest;

                        /**
                         * Encodes the specified CreateServiceAccountRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateServiceAccountRequest.verify|verify} messages.
                         * @param message CreateServiceAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateServiceAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateServiceAccountRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateServiceAccountRequest.verify|verify} messages.
                         * @param message CreateServiceAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateServiceAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateServiceAccountRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateServiceAccountRequest
                         * @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): temporal.api.cloud.cloudservice.v1.CreateServiceAccountRequest;

                        /**
                         * Decodes a CreateServiceAccountRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateServiceAccountRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateServiceAccountRequest;

                        /**
                         * Creates a CreateServiceAccountRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateServiceAccountRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateServiceAccountRequest;

                        /**
                         * Creates a plain object from a CreateServiceAccountRequest message. Also converts values to other types if specified.
                         * @param message CreateServiceAccountRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateServiceAccountRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateServiceAccountRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateServiceAccountRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateServiceAccountResponse. */
                    interface ICreateServiceAccountResponse {

                        /** The ID of the created service account. */
                        serviceAccountId?: (string|null);

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a CreateServiceAccountResponse. */
                    class CreateServiceAccountResponse implements ICreateServiceAccountResponse {

                        /**
                         * Constructs a new CreateServiceAccountResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateServiceAccountResponse);

                        /** The ID of the created service account. */
                        public serviceAccountId: string;

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new CreateServiceAccountResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateServiceAccountResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateServiceAccountResponse): temporal.api.cloud.cloudservice.v1.CreateServiceAccountResponse;

                        /**
                         * Encodes the specified CreateServiceAccountResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateServiceAccountResponse.verify|verify} messages.
                         * @param message CreateServiceAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateServiceAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateServiceAccountResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateServiceAccountResponse.verify|verify} messages.
                         * @param message CreateServiceAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateServiceAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateServiceAccountResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateServiceAccountResponse
                         * @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): temporal.api.cloud.cloudservice.v1.CreateServiceAccountResponse;

                        /**
                         * Decodes a CreateServiceAccountResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateServiceAccountResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateServiceAccountResponse;

                        /**
                         * Creates a CreateServiceAccountResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateServiceAccountResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateServiceAccountResponse;

                        /**
                         * Creates a plain object from a CreateServiceAccountResponse message. Also converts values to other types if specified.
                         * @param message CreateServiceAccountResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateServiceAccountResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateServiceAccountResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateServiceAccountResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetServiceAccountRequest. */
                    interface IGetServiceAccountRequest {

                        /** ID of the service account to retrieve. */
                        serviceAccountId?: (string|null);
                    }

                    /** Represents a GetServiceAccountRequest. */
                    class GetServiceAccountRequest implements IGetServiceAccountRequest {

                        /**
                         * Constructs a new GetServiceAccountRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetServiceAccountRequest);

                        /** ID of the service account to retrieve. */
                        public serviceAccountId: string;

                        /**
                         * Creates a new GetServiceAccountRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetServiceAccountRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetServiceAccountRequest): temporal.api.cloud.cloudservice.v1.GetServiceAccountRequest;

                        /**
                         * Encodes the specified GetServiceAccountRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetServiceAccountRequest.verify|verify} messages.
                         * @param message GetServiceAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetServiceAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetServiceAccountRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetServiceAccountRequest.verify|verify} messages.
                         * @param message GetServiceAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetServiceAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetServiceAccountRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetServiceAccountRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetServiceAccountRequest;

                        /**
                         * Decodes a GetServiceAccountRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetServiceAccountRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetServiceAccountRequest;

                        /**
                         * Creates a GetServiceAccountRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetServiceAccountRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetServiceAccountRequest;

                        /**
                         * Creates a plain object from a GetServiceAccountRequest message. Also converts values to other types if specified.
                         * @param message GetServiceAccountRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetServiceAccountRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetServiceAccountRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetServiceAccountRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetServiceAccountResponse. */
                    interface IGetServiceAccountResponse {

                        /** The service account retrieved. */
                        serviceAccount?: (temporal.api.cloud.identity.v1.IServiceAccount|null);
                    }

                    /** Represents a GetServiceAccountResponse. */
                    class GetServiceAccountResponse implements IGetServiceAccountResponse {

                        /**
                         * Constructs a new GetServiceAccountResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetServiceAccountResponse);

                        /** The service account retrieved. */
                        public serviceAccount?: (temporal.api.cloud.identity.v1.IServiceAccount|null);

                        /**
                         * Creates a new GetServiceAccountResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetServiceAccountResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetServiceAccountResponse): temporal.api.cloud.cloudservice.v1.GetServiceAccountResponse;

                        /**
                         * Encodes the specified GetServiceAccountResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetServiceAccountResponse.verify|verify} messages.
                         * @param message GetServiceAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetServiceAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetServiceAccountResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetServiceAccountResponse.verify|verify} messages.
                         * @param message GetServiceAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetServiceAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetServiceAccountResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetServiceAccountResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetServiceAccountResponse;

                        /**
                         * Decodes a GetServiceAccountResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetServiceAccountResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetServiceAccountResponse;

                        /**
                         * Creates a GetServiceAccountResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetServiceAccountResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetServiceAccountResponse;

                        /**
                         * Creates a plain object from a GetServiceAccountResponse message. Also converts values to other types if specified.
                         * @param message GetServiceAccountResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetServiceAccountResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetServiceAccountResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetServiceAccountResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetServiceAccountsRequest. */
                    interface IGetServiceAccountsRequest {

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        pageSize?: (number|null);

                        /** The page token if this is continuing from another response - optional. */
                        pageToken?: (string|null);
                    }

                    /** Represents a GetServiceAccountsRequest. */
                    class GetServiceAccountsRequest implements IGetServiceAccountsRequest {

                        /**
                         * Constructs a new GetServiceAccountsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetServiceAccountsRequest);

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        public pageSize: number;

                        /** The page token if this is continuing from another response - optional. */
                        public pageToken: string;

                        /**
                         * Creates a new GetServiceAccountsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetServiceAccountsRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetServiceAccountsRequest): temporal.api.cloud.cloudservice.v1.GetServiceAccountsRequest;

                        /**
                         * Encodes the specified GetServiceAccountsRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetServiceAccountsRequest.verify|verify} messages.
                         * @param message GetServiceAccountsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetServiceAccountsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetServiceAccountsRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetServiceAccountsRequest.verify|verify} messages.
                         * @param message GetServiceAccountsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetServiceAccountsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetServiceAccountsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetServiceAccountsRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetServiceAccountsRequest;

                        /**
                         * Decodes a GetServiceAccountsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetServiceAccountsRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetServiceAccountsRequest;

                        /**
                         * Creates a GetServiceAccountsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetServiceAccountsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetServiceAccountsRequest;

                        /**
                         * Creates a plain object from a GetServiceAccountsRequest message. Also converts values to other types if specified.
                         * @param message GetServiceAccountsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetServiceAccountsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetServiceAccountsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetServiceAccountsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetServiceAccountsResponse. */
                    interface IGetServiceAccountsResponse {

                        /** The list of service accounts in ascending ID order. */
                        serviceAccount?: (temporal.api.cloud.identity.v1.IServiceAccount[]|null);

                        /** The next page token, set if there is another page. */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a GetServiceAccountsResponse. */
                    class GetServiceAccountsResponse implements IGetServiceAccountsResponse {

                        /**
                         * Constructs a new GetServiceAccountsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetServiceAccountsResponse);

                        /** The list of service accounts in ascending ID order. */
                        public serviceAccount: temporal.api.cloud.identity.v1.IServiceAccount[];

                        /** The next page token, set if there is another page. */
                        public nextPageToken: string;

                        /**
                         * Creates a new GetServiceAccountsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetServiceAccountsResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetServiceAccountsResponse): temporal.api.cloud.cloudservice.v1.GetServiceAccountsResponse;

                        /**
                         * Encodes the specified GetServiceAccountsResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetServiceAccountsResponse.verify|verify} messages.
                         * @param message GetServiceAccountsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetServiceAccountsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetServiceAccountsResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetServiceAccountsResponse.verify|verify} messages.
                         * @param message GetServiceAccountsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetServiceAccountsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetServiceAccountsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetServiceAccountsResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetServiceAccountsResponse;

                        /**
                         * Decodes a GetServiceAccountsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetServiceAccountsResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetServiceAccountsResponse;

                        /**
                         * Creates a GetServiceAccountsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetServiceAccountsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetServiceAccountsResponse;

                        /**
                         * Creates a plain object from a GetServiceAccountsResponse message. Also converts values to other types if specified.
                         * @param message GetServiceAccountsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetServiceAccountsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetServiceAccountsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetServiceAccountsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateServiceAccountRequest. */
                    interface IUpdateServiceAccountRequest {

                        /** The ID of the service account to update. */
                        serviceAccountId?: (string|null);

                        /** The new service account specification. */
                        spec?: (temporal.api.cloud.identity.v1.IServiceAccountSpec|null);

                        /**
                         * The version of the service account for which this update is intended for.
                         * The latest version can be found in the GetServiceAccount response.
                         */
                        resourceVersion?: (string|null);

                        /** The ID to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents an UpdateServiceAccountRequest. */
                    class UpdateServiceAccountRequest implements IUpdateServiceAccountRequest {

                        /**
                         * Constructs a new UpdateServiceAccountRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateServiceAccountRequest);

                        /** The ID of the service account to update. */
                        public serviceAccountId: string;

                        /** The new service account specification. */
                        public spec?: (temporal.api.cloud.identity.v1.IServiceAccountSpec|null);

                        /**
                         * The version of the service account for which this update is intended for.
                         * The latest version can be found in the GetServiceAccount response.
                         */
                        public resourceVersion: string;

                        /** The ID to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new UpdateServiceAccountRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateServiceAccountRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateServiceAccountRequest): temporal.api.cloud.cloudservice.v1.UpdateServiceAccountRequest;

                        /**
                         * Encodes the specified UpdateServiceAccountRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateServiceAccountRequest.verify|verify} messages.
                         * @param message UpdateServiceAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateServiceAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateServiceAccountRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateServiceAccountRequest.verify|verify} messages.
                         * @param message UpdateServiceAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateServiceAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateServiceAccountRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateServiceAccountRequest
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateServiceAccountRequest;

                        /**
                         * Decodes an UpdateServiceAccountRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateServiceAccountRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateServiceAccountRequest;

                        /**
                         * Creates an UpdateServiceAccountRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateServiceAccountRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateServiceAccountRequest;

                        /**
                         * Creates a plain object from an UpdateServiceAccountRequest message. Also converts values to other types if specified.
                         * @param message UpdateServiceAccountRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateServiceAccountRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateServiceAccountRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateServiceAccountRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateServiceAccountResponse. */
                    interface IUpdateServiceAccountResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents an UpdateServiceAccountResponse. */
                    class UpdateServiceAccountResponse implements IUpdateServiceAccountResponse {

                        /**
                         * Constructs a new UpdateServiceAccountResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateServiceAccountResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new UpdateServiceAccountResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateServiceAccountResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateServiceAccountResponse): temporal.api.cloud.cloudservice.v1.UpdateServiceAccountResponse;

                        /**
                         * Encodes the specified UpdateServiceAccountResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateServiceAccountResponse.verify|verify} messages.
                         * @param message UpdateServiceAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateServiceAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateServiceAccountResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateServiceAccountResponse.verify|verify} messages.
                         * @param message UpdateServiceAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateServiceAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateServiceAccountResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateServiceAccountResponse
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateServiceAccountResponse;

                        /**
                         * Decodes an UpdateServiceAccountResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateServiceAccountResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateServiceAccountResponse;

                        /**
                         * Creates an UpdateServiceAccountResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateServiceAccountResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateServiceAccountResponse;

                        /**
                         * Creates a plain object from an UpdateServiceAccountResponse message. Also converts values to other types if specified.
                         * @param message UpdateServiceAccountResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateServiceAccountResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateServiceAccountResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateServiceAccountResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SetServiceAccountNamespaceAccessRequest. */
                    interface ISetServiceAccountNamespaceAccessRequest {

                        /** The ID of the service account to update. */
                        serviceAccountId?: (string|null);

                        /** The namespace to set permissions for. */
                        namespace?: (string|null);

                        /** The namespace access to assign the service account. */
                        access?: (temporal.api.cloud.identity.v1.INamespaceAccess|null);

                        /**
                         * The version of the service account for which this update is intended for.
                         * The latest version can be found in the GetServiceAccount response.
                         */
                        resourceVersion?: (string|null);

                        /** The ID to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a SetServiceAccountNamespaceAccessRequest. */
                    class SetServiceAccountNamespaceAccessRequest implements ISetServiceAccountNamespaceAccessRequest {

                        /**
                         * Constructs a new SetServiceAccountNamespaceAccessRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ISetServiceAccountNamespaceAccessRequest);

                        /** The ID of the service account to update. */
                        public serviceAccountId: string;

                        /** The namespace to set permissions for. */
                        public namespace: string;

                        /** The namespace access to assign the service account. */
                        public access?: (temporal.api.cloud.identity.v1.INamespaceAccess|null);

                        /**
                         * The version of the service account for which this update is intended for.
                         * The latest version can be found in the GetServiceAccount response.
                         */
                        public resourceVersion: string;

                        /** The ID to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new SetServiceAccountNamespaceAccessRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SetServiceAccountNamespaceAccessRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ISetServiceAccountNamespaceAccessRequest): temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessRequest;

                        /**
                         * Encodes the specified SetServiceAccountNamespaceAccessRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessRequest.verify|verify} messages.
                         * @param message SetServiceAccountNamespaceAccessRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ISetServiceAccountNamespaceAccessRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SetServiceAccountNamespaceAccessRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessRequest.verify|verify} messages.
                         * @param message SetServiceAccountNamespaceAccessRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ISetServiceAccountNamespaceAccessRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SetServiceAccountNamespaceAccessRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SetServiceAccountNamespaceAccessRequest
                         * @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): temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessRequest;

                        /**
                         * Decodes a SetServiceAccountNamespaceAccessRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SetServiceAccountNamespaceAccessRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessRequest;

                        /**
                         * Creates a SetServiceAccountNamespaceAccessRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SetServiceAccountNamespaceAccessRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessRequest;

                        /**
                         * Creates a plain object from a SetServiceAccountNamespaceAccessRequest message. Also converts values to other types if specified.
                         * @param message SetServiceAccountNamespaceAccessRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SetServiceAccountNamespaceAccessRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SetServiceAccountNamespaceAccessRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SetServiceAccountNamespaceAccessResponse. */
                    interface ISetServiceAccountNamespaceAccessResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a SetServiceAccountNamespaceAccessResponse. */
                    class SetServiceAccountNamespaceAccessResponse implements ISetServiceAccountNamespaceAccessResponse {

                        /**
                         * Constructs a new SetServiceAccountNamespaceAccessResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ISetServiceAccountNamespaceAccessResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new SetServiceAccountNamespaceAccessResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SetServiceAccountNamespaceAccessResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ISetServiceAccountNamespaceAccessResponse): temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessResponse;

                        /**
                         * Encodes the specified SetServiceAccountNamespaceAccessResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessResponse.verify|verify} messages.
                         * @param message SetServiceAccountNamespaceAccessResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ISetServiceAccountNamespaceAccessResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SetServiceAccountNamespaceAccessResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessResponse.verify|verify} messages.
                         * @param message SetServiceAccountNamespaceAccessResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ISetServiceAccountNamespaceAccessResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SetServiceAccountNamespaceAccessResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SetServiceAccountNamespaceAccessResponse
                         * @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): temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessResponse;

                        /**
                         * Decodes a SetServiceAccountNamespaceAccessResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SetServiceAccountNamespaceAccessResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessResponse;

                        /**
                         * Creates a SetServiceAccountNamespaceAccessResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SetServiceAccountNamespaceAccessResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessResponse;

                        /**
                         * Creates a plain object from a SetServiceAccountNamespaceAccessResponse message. Also converts values to other types if specified.
                         * @param message SetServiceAccountNamespaceAccessResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.SetServiceAccountNamespaceAccessResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SetServiceAccountNamespaceAccessResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SetServiceAccountNamespaceAccessResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteServiceAccountRequest. */
                    interface IDeleteServiceAccountRequest {

                        /** The ID of the service account to delete; */
                        serviceAccountId?: (string|null);

                        /**
                         * The version of the service account for which this update is intended for.
                         * The latest version can be found in the GetServiceAccount response.
                         */
                        resourceVersion?: (string|null);

                        /** The ID to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a DeleteServiceAccountRequest. */
                    class DeleteServiceAccountRequest implements IDeleteServiceAccountRequest {

                        /**
                         * Constructs a new DeleteServiceAccountRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteServiceAccountRequest);

                        /** The ID of the service account to delete; */
                        public serviceAccountId: string;

                        /**
                         * The version of the service account for which this update is intended for.
                         * The latest version can be found in the GetServiceAccount response.
                         */
                        public resourceVersion: string;

                        /** The ID to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new DeleteServiceAccountRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteServiceAccountRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteServiceAccountRequest): temporal.api.cloud.cloudservice.v1.DeleteServiceAccountRequest;

                        /**
                         * Encodes the specified DeleteServiceAccountRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteServiceAccountRequest.verify|verify} messages.
                         * @param message DeleteServiceAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteServiceAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteServiceAccountRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteServiceAccountRequest.verify|verify} messages.
                         * @param message DeleteServiceAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteServiceAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteServiceAccountRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteServiceAccountRequest
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteServiceAccountRequest;

                        /**
                         * Decodes a DeleteServiceAccountRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteServiceAccountRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteServiceAccountRequest;

                        /**
                         * Creates a DeleteServiceAccountRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteServiceAccountRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteServiceAccountRequest;

                        /**
                         * Creates a plain object from a DeleteServiceAccountRequest message. Also converts values to other types if specified.
                         * @param message DeleteServiceAccountRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteServiceAccountRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteServiceAccountRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteServiceAccountRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteServiceAccountResponse. */
                    interface IDeleteServiceAccountResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a DeleteServiceAccountResponse. */
                    class DeleteServiceAccountResponse implements IDeleteServiceAccountResponse {

                        /**
                         * Constructs a new DeleteServiceAccountResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteServiceAccountResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new DeleteServiceAccountResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteServiceAccountResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteServiceAccountResponse): temporal.api.cloud.cloudservice.v1.DeleteServiceAccountResponse;

                        /**
                         * Encodes the specified DeleteServiceAccountResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteServiceAccountResponse.verify|verify} messages.
                         * @param message DeleteServiceAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteServiceAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteServiceAccountResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteServiceAccountResponse.verify|verify} messages.
                         * @param message DeleteServiceAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteServiceAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteServiceAccountResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteServiceAccountResponse
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteServiceAccountResponse;

                        /**
                         * Decodes a DeleteServiceAccountResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteServiceAccountResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteServiceAccountResponse;

                        /**
                         * Creates a DeleteServiceAccountResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteServiceAccountResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteServiceAccountResponse;

                        /**
                         * Creates a plain object from a DeleteServiceAccountResponse message. Also converts values to other types if specified.
                         * @param message DeleteServiceAccountResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteServiceAccountResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteServiceAccountResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteServiceAccountResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetUsageRequest. */
                    interface IGetUsageRequest {

                        /**
                         * Filter for UTC time >= - optional.
                         * Defaults to: start of the current month.
                         * Must be: within the last 90 days from the current date.
                         * Must be: midnight UTC time.
                         */
                        startTimeInclusive?: (google.protobuf.ITimestamp|null);

                        /**
                         * Filter for UTC time < - optional.
                         * Defaults to: start of the next UTC day.
                         * Must be: within the last 90 days from the current date.
                         * Must be: midnight UTC time.
                         */
                        endTimeExclusive?: (google.protobuf.ITimestamp|null);

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Each count corresponds to a single object - per day per namespace
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        pageSize?: (number|null);

                        /** The page token if this is continuing from another response - optional. */
                        pageToken?: (string|null);
                    }

                    /** Represents a GetUsageRequest. */
                    class GetUsageRequest implements IGetUsageRequest {

                        /**
                         * Constructs a new GetUsageRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUsageRequest);

                        /**
                         * Filter for UTC time >= - optional.
                         * Defaults to: start of the current month.
                         * Must be: within the last 90 days from the current date.
                         * Must be: midnight UTC time.
                         */
                        public startTimeInclusive?: (google.protobuf.ITimestamp|null);

                        /**
                         * Filter for UTC time < - optional.
                         * Defaults to: start of the next UTC day.
                         * Must be: within the last 90 days from the current date.
                         * Must be: midnight UTC time.
                         */
                        public endTimeExclusive?: (google.protobuf.ITimestamp|null);

                        /**
                         * The requested size of the page to retrieve - optional.
                         * Each count corresponds to a single object - per day per namespace
                         * Cannot exceed 1000. Defaults to 100.
                         */
                        public pageSize: number;

                        /** The page token if this is continuing from another response - optional. */
                        public pageToken: string;

                        /**
                         * Creates a new GetUsageRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUsageRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUsageRequest): temporal.api.cloud.cloudservice.v1.GetUsageRequest;

                        /**
                         * Encodes the specified GetUsageRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUsageRequest.verify|verify} messages.
                         * @param message GetUsageRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUsageRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUsageRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUsageRequest.verify|verify} messages.
                         * @param message GetUsageRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUsageRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUsageRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUsageRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetUsageRequest;

                        /**
                         * Decodes a GetUsageRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUsageRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUsageRequest;

                        /**
                         * Creates a GetUsageRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUsageRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUsageRequest;

                        /**
                         * Creates a plain object from a GetUsageRequest message. Also converts values to other types if specified.
                         * @param message GetUsageRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUsageRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUsageRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUsageRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetUsageResponse. */
                    interface IGetUsageResponse {

                        /**
                         * The list of data based on granularity (per Day for now)
                         * Ordered by: time range in ascending order
                         */
                        summaries?: (temporal.api.cloud.usage.v1.ISummary[]|null);

                        /** The next page's token. */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a GetUsageResponse. */
                    class GetUsageResponse implements IGetUsageResponse {

                        /**
                         * Constructs a new GetUsageResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetUsageResponse);

                        /**
                         * The list of data based on granularity (per Day for now)
                         * Ordered by: time range in ascending order
                         */
                        public summaries: temporal.api.cloud.usage.v1.ISummary[];

                        /** The next page's token. */
                        public nextPageToken: string;

                        /**
                         * Creates a new GetUsageResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUsageResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetUsageResponse): temporal.api.cloud.cloudservice.v1.GetUsageResponse;

                        /**
                         * Encodes the specified GetUsageResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUsageResponse.verify|verify} messages.
                         * @param message GetUsageResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetUsageResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUsageResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetUsageResponse.verify|verify} messages.
                         * @param message GetUsageResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetUsageResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUsageResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetUsageResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetUsageResponse;

                        /**
                         * Decodes a GetUsageResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUsageResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetUsageResponse;

                        /**
                         * Creates a GetUsageResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetUsageResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetUsageResponse;

                        /**
                         * Creates a plain object from a GetUsageResponse message. Also converts values to other types if specified.
                         * @param message GetUsageResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetUsageResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUsageResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetUsageResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetAccountRequest. */
                    interface IGetAccountRequest {
                    }

                    /** Represents a GetAccountRequest. */
                    class GetAccountRequest implements IGetAccountRequest {

                        /**
                         * Constructs a new GetAccountRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetAccountRequest);

                        /**
                         * Creates a new GetAccountRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAccountRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetAccountRequest): temporal.api.cloud.cloudservice.v1.GetAccountRequest;

                        /**
                         * Encodes the specified GetAccountRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetAccountRequest.verify|verify} messages.
                         * @param message GetAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAccountRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetAccountRequest.verify|verify} messages.
                         * @param message GetAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAccountRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetAccountRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetAccountRequest;

                        /**
                         * Decodes a GetAccountRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAccountRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetAccountRequest;

                        /**
                         * Creates a GetAccountRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetAccountRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetAccountRequest;

                        /**
                         * Creates a plain object from a GetAccountRequest message. Also converts values to other types if specified.
                         * @param message GetAccountRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetAccountRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAccountRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetAccountRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetAccountResponse. */
                    interface IGetAccountResponse {

                        /** The account. */
                        account?: (temporal.api.cloud.account.v1.IAccount|null);
                    }

                    /** Represents a GetAccountResponse. */
                    class GetAccountResponse implements IGetAccountResponse {

                        /**
                         * Constructs a new GetAccountResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetAccountResponse);

                        /** The account. */
                        public account?: (temporal.api.cloud.account.v1.IAccount|null);

                        /**
                         * Creates a new GetAccountResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAccountResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetAccountResponse): temporal.api.cloud.cloudservice.v1.GetAccountResponse;

                        /**
                         * Encodes the specified GetAccountResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetAccountResponse.verify|verify} messages.
                         * @param message GetAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAccountResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetAccountResponse.verify|verify} messages.
                         * @param message GetAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAccountResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetAccountResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetAccountResponse;

                        /**
                         * Decodes a GetAccountResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAccountResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetAccountResponse;

                        /**
                         * Creates a GetAccountResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetAccountResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetAccountResponse;

                        /**
                         * Creates a plain object from a GetAccountResponse message. Also converts values to other types if specified.
                         * @param message GetAccountResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetAccountResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAccountResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetAccountResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateAccountRequest. */
                    interface IUpdateAccountRequest {

                        /** The updated account specification to apply. */
                        spec?: (temporal.api.cloud.account.v1.IAccountSpec|null);

                        /**
                         * The version of the account for which this update is intended for.
                         * The latest version can be found in the GetAccount operation response.
                         */
                        resourceVersion?: (string|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents an UpdateAccountRequest. */
                    class UpdateAccountRequest implements IUpdateAccountRequest {

                        /**
                         * Constructs a new UpdateAccountRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateAccountRequest);

                        /** The updated account specification to apply. */
                        public spec?: (temporal.api.cloud.account.v1.IAccountSpec|null);

                        /**
                         * The version of the account for which this update is intended for.
                         * The latest version can be found in the GetAccount operation response.
                         */
                        public resourceVersion: string;

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * Creates a new UpdateAccountRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateAccountRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateAccountRequest): temporal.api.cloud.cloudservice.v1.UpdateAccountRequest;

                        /**
                         * Encodes the specified UpdateAccountRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateAccountRequest.verify|verify} messages.
                         * @param message UpdateAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateAccountRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateAccountRequest.verify|verify} messages.
                         * @param message UpdateAccountRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateAccountRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateAccountRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateAccountRequest
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateAccountRequest;

                        /**
                         * Decodes an UpdateAccountRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateAccountRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateAccountRequest;

                        /**
                         * Creates an UpdateAccountRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateAccountRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateAccountRequest;

                        /**
                         * Creates a plain object from an UpdateAccountRequest message. Also converts values to other types if specified.
                         * @param message UpdateAccountRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateAccountRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateAccountRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateAccountRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateAccountResponse. */
                    interface IUpdateAccountResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents an UpdateAccountResponse. */
                    class UpdateAccountResponse implements IUpdateAccountResponse {

                        /**
                         * Constructs a new UpdateAccountResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateAccountResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new UpdateAccountResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateAccountResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateAccountResponse): temporal.api.cloud.cloudservice.v1.UpdateAccountResponse;

                        /**
                         * Encodes the specified UpdateAccountResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateAccountResponse.verify|verify} messages.
                         * @param message UpdateAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateAccountResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateAccountResponse.verify|verify} messages.
                         * @param message UpdateAccountResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateAccountResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateAccountResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateAccountResponse
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateAccountResponse;

                        /**
                         * Decodes an UpdateAccountResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateAccountResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateAccountResponse;

                        /**
                         * Creates an UpdateAccountResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateAccountResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateAccountResponse;

                        /**
                         * Creates a plain object from an UpdateAccountResponse message. Also converts values to other types if specified.
                         * @param message UpdateAccountResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateAccountResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateAccountResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateAccountResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateNamespaceExportSinkRequest. */
                    interface ICreateNamespaceExportSinkRequest {

                        /** The namespace under which the sink is configured. */
                        namespace?: (string|null);

                        /** The specification for the export sink. */
                        spec?: (temporal.api.cloud.namespace.v1.IExportSinkSpec|null);

                        /** Optional. The ID to use for this async operation. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a CreateNamespaceExportSinkRequest. */
                    class CreateNamespaceExportSinkRequest implements ICreateNamespaceExportSinkRequest {

                        /**
                         * Constructs a new CreateNamespaceExportSinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateNamespaceExportSinkRequest);

                        /** The namespace under which the sink is configured. */
                        public namespace: string;

                        /** The specification for the export sink. */
                        public spec?: (temporal.api.cloud.namespace.v1.IExportSinkSpec|null);

                        /** Optional. The ID to use for this async operation. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new CreateNamespaceExportSinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateNamespaceExportSinkRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateNamespaceExportSinkRequest): temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkRequest;

                        /**
                         * Encodes the specified CreateNamespaceExportSinkRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkRequest.verify|verify} messages.
                         * @param message CreateNamespaceExportSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateNamespaceExportSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateNamespaceExportSinkRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkRequest.verify|verify} messages.
                         * @param message CreateNamespaceExportSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateNamespaceExportSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateNamespaceExportSinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateNamespaceExportSinkRequest
                         * @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): temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkRequest;

                        /**
                         * Decodes a CreateNamespaceExportSinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateNamespaceExportSinkRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkRequest;

                        /**
                         * Creates a CreateNamespaceExportSinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateNamespaceExportSinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkRequest;

                        /**
                         * Creates a plain object from a CreateNamespaceExportSinkRequest message. Also converts values to other types if specified.
                         * @param message CreateNamespaceExportSinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateNamespaceExportSinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateNamespaceExportSinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateNamespaceExportSinkResponse. */
                    interface ICreateNamespaceExportSinkResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a CreateNamespaceExportSinkResponse. */
                    class CreateNamespaceExportSinkResponse implements ICreateNamespaceExportSinkResponse {

                        /**
                         * Constructs a new CreateNamespaceExportSinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateNamespaceExportSinkResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new CreateNamespaceExportSinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateNamespaceExportSinkResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateNamespaceExportSinkResponse): temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkResponse;

                        /**
                         * Encodes the specified CreateNamespaceExportSinkResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkResponse.verify|verify} messages.
                         * @param message CreateNamespaceExportSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateNamespaceExportSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateNamespaceExportSinkResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkResponse.verify|verify} messages.
                         * @param message CreateNamespaceExportSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateNamespaceExportSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateNamespaceExportSinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateNamespaceExportSinkResponse
                         * @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): temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkResponse;

                        /**
                         * Decodes a CreateNamespaceExportSinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateNamespaceExportSinkResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkResponse;

                        /**
                         * Creates a CreateNamespaceExportSinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateNamespaceExportSinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkResponse;

                        /**
                         * Creates a plain object from a CreateNamespaceExportSinkResponse message. Also converts values to other types if specified.
                         * @param message CreateNamespaceExportSinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateNamespaceExportSinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateNamespaceExportSinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateNamespaceExportSinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNamespaceExportSinkRequest. */
                    interface IGetNamespaceExportSinkRequest {

                        /** The namespace to which the sink belongs. */
                        namespace?: (string|null);

                        /** The name of the sink to retrieve. */
                        name?: (string|null);
                    }

                    /** Represents a GetNamespaceExportSinkRequest. */
                    class GetNamespaceExportSinkRequest implements IGetNamespaceExportSinkRequest {

                        /**
                         * Constructs a new GetNamespaceExportSinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinkRequest);

                        /** The namespace to which the sink belongs. */
                        public namespace: string;

                        /** The name of the sink to retrieve. */
                        public name: string;

                        /**
                         * Creates a new GetNamespaceExportSinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNamespaceExportSinkRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinkRequest): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkRequest;

                        /**
                         * Encodes the specified GetNamespaceExportSinkRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkRequest.verify|verify} messages.
                         * @param message GetNamespaceExportSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNamespaceExportSinkRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkRequest.verify|verify} messages.
                         * @param message GetNamespaceExportSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNamespaceExportSinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNamespaceExportSinkRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkRequest;

                        /**
                         * Decodes a GetNamespaceExportSinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNamespaceExportSinkRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkRequest;

                        /**
                         * Creates a GetNamespaceExportSinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNamespaceExportSinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkRequest;

                        /**
                         * Creates a plain object from a GetNamespaceExportSinkRequest message. Also converts values to other types if specified.
                         * @param message GetNamespaceExportSinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNamespaceExportSinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNamespaceExportSinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNamespaceExportSinkResponse. */
                    interface IGetNamespaceExportSinkResponse {

                        /** The export sink retrieved. */
                        sink?: (temporal.api.cloud.namespace.v1.IExportSink|null);
                    }

                    /** Represents a GetNamespaceExportSinkResponse. */
                    class GetNamespaceExportSinkResponse implements IGetNamespaceExportSinkResponse {

                        /**
                         * Constructs a new GetNamespaceExportSinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinkResponse);

                        /** The export sink retrieved. */
                        public sink?: (temporal.api.cloud.namespace.v1.IExportSink|null);

                        /**
                         * Creates a new GetNamespaceExportSinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNamespaceExportSinkResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinkResponse): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkResponse;

                        /**
                         * Encodes the specified GetNamespaceExportSinkResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkResponse.verify|verify} messages.
                         * @param message GetNamespaceExportSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNamespaceExportSinkResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkResponse.verify|verify} messages.
                         * @param message GetNamespaceExportSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNamespaceExportSinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNamespaceExportSinkResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkResponse;

                        /**
                         * Decodes a GetNamespaceExportSinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNamespaceExportSinkResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkResponse;

                        /**
                         * Creates a GetNamespaceExportSinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNamespaceExportSinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkResponse;

                        /**
                         * Creates a plain object from a GetNamespaceExportSinkResponse message. Also converts values to other types if specified.
                         * @param message GetNamespaceExportSinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNamespaceExportSinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNamespaceExportSinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNamespaceExportSinksRequest. */
                    interface IGetNamespaceExportSinksRequest {

                        /** The namespace to which the sinks belong. */
                        namespace?: (string|null);

                        /**
                         * The requested size of the page to retrieve. Cannot exceed 1000.
                         * Defaults to 100 if not specified.
                         */
                        pageSize?: (number|null);

                        /** The page token if this is continuing from another response - optional. */
                        pageToken?: (string|null);
                    }

                    /** Represents a GetNamespaceExportSinksRequest. */
                    class GetNamespaceExportSinksRequest implements IGetNamespaceExportSinksRequest {

                        /**
                         * Constructs a new GetNamespaceExportSinksRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinksRequest);

                        /** The namespace to which the sinks belong. */
                        public namespace: string;

                        /**
                         * The requested size of the page to retrieve. Cannot exceed 1000.
                         * Defaults to 100 if not specified.
                         */
                        public pageSize: number;

                        /** The page token if this is continuing from another response - optional. */
                        public pageToken: string;

                        /**
                         * Creates a new GetNamespaceExportSinksRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNamespaceExportSinksRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinksRequest): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksRequest;

                        /**
                         * Encodes the specified GetNamespaceExportSinksRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksRequest.verify|verify} messages.
                         * @param message GetNamespaceExportSinksRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinksRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNamespaceExportSinksRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksRequest.verify|verify} messages.
                         * @param message GetNamespaceExportSinksRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinksRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNamespaceExportSinksRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNamespaceExportSinksRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksRequest;

                        /**
                         * Decodes a GetNamespaceExportSinksRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNamespaceExportSinksRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksRequest;

                        /**
                         * Creates a GetNamespaceExportSinksRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNamespaceExportSinksRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksRequest;

                        /**
                         * Creates a plain object from a GetNamespaceExportSinksRequest message. Also converts values to other types if specified.
                         * @param message GetNamespaceExportSinksRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNamespaceExportSinksRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNamespaceExportSinksRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetNamespaceExportSinksResponse. */
                    interface IGetNamespaceExportSinksResponse {

                        /** The list of export sinks retrieved. */
                        sinks?: (temporal.api.cloud.namespace.v1.IExportSink[]|null);

                        /** The next page token, set if there is another page. */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a GetNamespaceExportSinksResponse. */
                    class GetNamespaceExportSinksResponse implements IGetNamespaceExportSinksResponse {

                        /**
                         * Constructs a new GetNamespaceExportSinksResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinksResponse);

                        /** The list of export sinks retrieved. */
                        public sinks: temporal.api.cloud.namespace.v1.IExportSink[];

                        /** The next page token, set if there is another page. */
                        public nextPageToken: string;

                        /**
                         * Creates a new GetNamespaceExportSinksResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetNamespaceExportSinksResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinksResponse): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksResponse;

                        /**
                         * Encodes the specified GetNamespaceExportSinksResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksResponse.verify|verify} messages.
                         * @param message GetNamespaceExportSinksResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinksResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetNamespaceExportSinksResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksResponse.verify|verify} messages.
                         * @param message GetNamespaceExportSinksResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetNamespaceExportSinksResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetNamespaceExportSinksResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetNamespaceExportSinksResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksResponse;

                        /**
                         * Decodes a GetNamespaceExportSinksResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetNamespaceExportSinksResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksResponse;

                        /**
                         * Creates a GetNamespaceExportSinksResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetNamespaceExportSinksResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksResponse;

                        /**
                         * Creates a plain object from a GetNamespaceExportSinksResponse message. Also converts values to other types if specified.
                         * @param message GetNamespaceExportSinksResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetNamespaceExportSinksResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetNamespaceExportSinksResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetNamespaceExportSinksResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateNamespaceExportSinkRequest. */
                    interface IUpdateNamespaceExportSinkRequest {

                        /** The namespace to which the sink belongs. */
                        namespace?: (string|null);

                        /** The updated export sink specification. */
                        spec?: (temporal.api.cloud.namespace.v1.IExportSinkSpec|null);

                        /**
                         * The version of the sink to update. The latest version can be
                         * retrieved using the GetNamespaceExportSink call.
                         */
                        resourceVersion?: (string|null);

                        /** The ID to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents an UpdateNamespaceExportSinkRequest. */
                    class UpdateNamespaceExportSinkRequest implements IUpdateNamespaceExportSinkRequest {

                        /**
                         * Constructs a new UpdateNamespaceExportSinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceExportSinkRequest);

                        /** The namespace to which the sink belongs. */
                        public namespace: string;

                        /** The updated export sink specification. */
                        public spec?: (temporal.api.cloud.namespace.v1.IExportSinkSpec|null);

                        /**
                         * The version of the sink to update. The latest version can be
                         * retrieved using the GetNamespaceExportSink call.
                         */
                        public resourceVersion: string;

                        /** The ID to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new UpdateNamespaceExportSinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateNamespaceExportSinkRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceExportSinkRequest): temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkRequest;

                        /**
                         * Encodes the specified UpdateNamespaceExportSinkRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkRequest.verify|verify} messages.
                         * @param message UpdateNamespaceExportSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceExportSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateNamespaceExportSinkRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkRequest.verify|verify} messages.
                         * @param message UpdateNamespaceExportSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceExportSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateNamespaceExportSinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateNamespaceExportSinkRequest
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkRequest;

                        /**
                         * Decodes an UpdateNamespaceExportSinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateNamespaceExportSinkRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkRequest;

                        /**
                         * Creates an UpdateNamespaceExportSinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateNamespaceExportSinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkRequest;

                        /**
                         * Creates a plain object from an UpdateNamespaceExportSinkRequest message. Also converts values to other types if specified.
                         * @param message UpdateNamespaceExportSinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateNamespaceExportSinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateNamespaceExportSinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateNamespaceExportSinkResponse. */
                    interface IUpdateNamespaceExportSinkResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents an UpdateNamespaceExportSinkResponse. */
                    class UpdateNamespaceExportSinkResponse implements IUpdateNamespaceExportSinkResponse {

                        /**
                         * Constructs a new UpdateNamespaceExportSinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceExportSinkResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new UpdateNamespaceExportSinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateNamespaceExportSinkResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceExportSinkResponse): temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkResponse;

                        /**
                         * Encodes the specified UpdateNamespaceExportSinkResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkResponse.verify|verify} messages.
                         * @param message UpdateNamespaceExportSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceExportSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateNamespaceExportSinkResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkResponse.verify|verify} messages.
                         * @param message UpdateNamespaceExportSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceExportSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateNamespaceExportSinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateNamespaceExportSinkResponse
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkResponse;

                        /**
                         * Decodes an UpdateNamespaceExportSinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateNamespaceExportSinkResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkResponse;

                        /**
                         * Creates an UpdateNamespaceExportSinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateNamespaceExportSinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkResponse;

                        /**
                         * Creates a plain object from an UpdateNamespaceExportSinkResponse message. Also converts values to other types if specified.
                         * @param message UpdateNamespaceExportSinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateNamespaceExportSinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateNamespaceExportSinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateNamespaceExportSinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteNamespaceExportSinkRequest. */
                    interface IDeleteNamespaceExportSinkRequest {

                        /** The namespace to which the sink belongs. */
                        namespace?: (string|null);

                        /** The name of the sink to delete. */
                        name?: (string|null);

                        /**
                         * The version of the sink to delete. The latest version can be
                         * retrieved using the GetNamespaceExportSink call.
                         */
                        resourceVersion?: (string|null);

                        /** The ID to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a DeleteNamespaceExportSinkRequest. */
                    class DeleteNamespaceExportSinkRequest implements IDeleteNamespaceExportSinkRequest {

                        /**
                         * Constructs a new DeleteNamespaceExportSinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceExportSinkRequest);

                        /** The namespace to which the sink belongs. */
                        public namespace: string;

                        /** The name of the sink to delete. */
                        public name: string;

                        /**
                         * The version of the sink to delete. The latest version can be
                         * retrieved using the GetNamespaceExportSink call.
                         */
                        public resourceVersion: string;

                        /** The ID to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new DeleteNamespaceExportSinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteNamespaceExportSinkRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceExportSinkRequest): temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkRequest;

                        /**
                         * Encodes the specified DeleteNamespaceExportSinkRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkRequest.verify|verify} messages.
                         * @param message DeleteNamespaceExportSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceExportSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteNamespaceExportSinkRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkRequest.verify|verify} messages.
                         * @param message DeleteNamespaceExportSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceExportSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteNamespaceExportSinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteNamespaceExportSinkRequest
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkRequest;

                        /**
                         * Decodes a DeleteNamespaceExportSinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteNamespaceExportSinkRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkRequest;

                        /**
                         * Creates a DeleteNamespaceExportSinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteNamespaceExportSinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkRequest;

                        /**
                         * Creates a plain object from a DeleteNamespaceExportSinkRequest message. Also converts values to other types if specified.
                         * @param message DeleteNamespaceExportSinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteNamespaceExportSinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteNamespaceExportSinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteNamespaceExportSinkResponse. */
                    interface IDeleteNamespaceExportSinkResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a DeleteNamespaceExportSinkResponse. */
                    class DeleteNamespaceExportSinkResponse implements IDeleteNamespaceExportSinkResponse {

                        /**
                         * Constructs a new DeleteNamespaceExportSinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceExportSinkResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new DeleteNamespaceExportSinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteNamespaceExportSinkResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceExportSinkResponse): temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkResponse;

                        /**
                         * Encodes the specified DeleteNamespaceExportSinkResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkResponse.verify|verify} messages.
                         * @param message DeleteNamespaceExportSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceExportSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteNamespaceExportSinkResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkResponse.verify|verify} messages.
                         * @param message DeleteNamespaceExportSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteNamespaceExportSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteNamespaceExportSinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteNamespaceExportSinkResponse
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkResponse;

                        /**
                         * Decodes a DeleteNamespaceExportSinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteNamespaceExportSinkResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkResponse;

                        /**
                         * Creates a DeleteNamespaceExportSinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteNamespaceExportSinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkResponse;

                        /**
                         * Creates a plain object from a DeleteNamespaceExportSinkResponse message. Also converts values to other types if specified.
                         * @param message DeleteNamespaceExportSinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteNamespaceExportSinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteNamespaceExportSinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteNamespaceExportSinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ValidateNamespaceExportSinkRequest. */
                    interface IValidateNamespaceExportSinkRequest {

                        /** The namespace to which the sink belongs. */
                        namespace?: (string|null);

                        /** The export sink specification to validate. */
                        spec?: (temporal.api.cloud.namespace.v1.IExportSinkSpec|null);
                    }

                    /** Represents a ValidateNamespaceExportSinkRequest. */
                    class ValidateNamespaceExportSinkRequest implements IValidateNamespaceExportSinkRequest {

                        /**
                         * Constructs a new ValidateNamespaceExportSinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IValidateNamespaceExportSinkRequest);

                        /** The namespace to which the sink belongs. */
                        public namespace: string;

                        /** The export sink specification to validate. */
                        public spec?: (temporal.api.cloud.namespace.v1.IExportSinkSpec|null);

                        /**
                         * Creates a new ValidateNamespaceExportSinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ValidateNamespaceExportSinkRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IValidateNamespaceExportSinkRequest): temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkRequest;

                        /**
                         * Encodes the specified ValidateNamespaceExportSinkRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkRequest.verify|verify} messages.
                         * @param message ValidateNamespaceExportSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IValidateNamespaceExportSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValidateNamespaceExportSinkRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkRequest.verify|verify} messages.
                         * @param message ValidateNamespaceExportSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IValidateNamespaceExportSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValidateNamespaceExportSinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ValidateNamespaceExportSinkRequest
                         * @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): temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkRequest;

                        /**
                         * Decodes a ValidateNamespaceExportSinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ValidateNamespaceExportSinkRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkRequest;

                        /**
                         * Creates a ValidateNamespaceExportSinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ValidateNamespaceExportSinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkRequest;

                        /**
                         * Creates a plain object from a ValidateNamespaceExportSinkRequest message. Also converts values to other types if specified.
                         * @param message ValidateNamespaceExportSinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValidateNamespaceExportSinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ValidateNamespaceExportSinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ValidateNamespaceExportSinkResponse. */
                    interface IValidateNamespaceExportSinkResponse {
                    }

                    /** Represents a ValidateNamespaceExportSinkResponse. */
                    class ValidateNamespaceExportSinkResponse implements IValidateNamespaceExportSinkResponse {

                        /**
                         * Constructs a new ValidateNamespaceExportSinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IValidateNamespaceExportSinkResponse);

                        /**
                         * Creates a new ValidateNamespaceExportSinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ValidateNamespaceExportSinkResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IValidateNamespaceExportSinkResponse): temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkResponse;

                        /**
                         * Encodes the specified ValidateNamespaceExportSinkResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkResponse.verify|verify} messages.
                         * @param message ValidateNamespaceExportSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IValidateNamespaceExportSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValidateNamespaceExportSinkResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkResponse.verify|verify} messages.
                         * @param message ValidateNamespaceExportSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IValidateNamespaceExportSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValidateNamespaceExportSinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ValidateNamespaceExportSinkResponse
                         * @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): temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkResponse;

                        /**
                         * Decodes a ValidateNamespaceExportSinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ValidateNamespaceExportSinkResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkResponse;

                        /**
                         * Creates a ValidateNamespaceExportSinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ValidateNamespaceExportSinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkResponse;

                        /**
                         * Creates a plain object from a ValidateNamespaceExportSinkResponse message. Also converts values to other types if specified.
                         * @param message ValidateNamespaceExportSinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.ValidateNamespaceExportSinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValidateNamespaceExportSinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ValidateNamespaceExportSinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateNamespaceTagsRequest. */
                    interface IUpdateNamespaceTagsRequest {

                        /** The namespace to set tags for. */
                        namespace?: (string|null);

                        /**
                         * A list of tags to add or update.
                         * If a key of an existing tag is added, the tag's value is updated.
                         * At least one of tags_to_upsert or tags_to_remove must be specified.
                         */
                        tagsToUpsert?: ({ [k: string]: string }|null);

                        /**
                         * A list of tag keys to remove.
                         * If a tag key doesn't exist, it is silently ignored.
                         * At least one of tags_to_upsert or tags_to_remove must be specified.
                         */
                        tagsToRemove?: (string[]|null);

                        /** The id to use for this async operation - optional. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents an UpdateNamespaceTagsRequest. */
                    class UpdateNamespaceTagsRequest implements IUpdateNamespaceTagsRequest {

                        /**
                         * Constructs a new UpdateNamespaceTagsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceTagsRequest);

                        /** The namespace to set tags for. */
                        public namespace: string;

                        /**
                         * A list of tags to add or update.
                         * If a key of an existing tag is added, the tag's value is updated.
                         * At least one of tags_to_upsert or tags_to_remove must be specified.
                         */
                        public tagsToUpsert: { [k: string]: string };

                        /**
                         * A list of tag keys to remove.
                         * If a tag key doesn't exist, it is silently ignored.
                         * At least one of tags_to_upsert or tags_to_remove must be specified.
                         */
                        public tagsToRemove: string[];

                        /** The id to use for this async operation - optional. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new UpdateNamespaceTagsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateNamespaceTagsRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceTagsRequest): temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsRequest;

                        /**
                         * Encodes the specified UpdateNamespaceTagsRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsRequest.verify|verify} messages.
                         * @param message UpdateNamespaceTagsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceTagsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateNamespaceTagsRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsRequest.verify|verify} messages.
                         * @param message UpdateNamespaceTagsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceTagsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateNamespaceTagsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateNamespaceTagsRequest
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsRequest;

                        /**
                         * Decodes an UpdateNamespaceTagsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateNamespaceTagsRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsRequest;

                        /**
                         * Creates an UpdateNamespaceTagsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateNamespaceTagsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsRequest;

                        /**
                         * Creates a plain object from an UpdateNamespaceTagsRequest message. Also converts values to other types if specified.
                         * @param message UpdateNamespaceTagsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateNamespaceTagsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateNamespaceTagsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateNamespaceTagsResponse. */
                    interface IUpdateNamespaceTagsResponse {

                        /** The async operation. */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents an UpdateNamespaceTagsResponse. */
                    class UpdateNamespaceTagsResponse implements IUpdateNamespaceTagsResponse {

                        /**
                         * Constructs a new UpdateNamespaceTagsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceTagsResponse);

                        /** The async operation. */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new UpdateNamespaceTagsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateNamespaceTagsResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceTagsResponse): temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsResponse;

                        /**
                         * Encodes the specified UpdateNamespaceTagsResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsResponse.verify|verify} messages.
                         * @param message UpdateNamespaceTagsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceTagsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateNamespaceTagsResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsResponse.verify|verify} messages.
                         * @param message UpdateNamespaceTagsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IUpdateNamespaceTagsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateNamespaceTagsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateNamespaceTagsResponse
                         * @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): temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsResponse;

                        /**
                         * Decodes an UpdateNamespaceTagsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateNamespaceTagsResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsResponse;

                        /**
                         * Creates an UpdateNamespaceTagsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateNamespaceTagsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsResponse;

                        /**
                         * Creates a plain object from an UpdateNamespaceTagsResponse message. Also converts values to other types if specified.
                         * @param message UpdateNamespaceTagsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.UpdateNamespaceTagsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateNamespaceTagsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateNamespaceTagsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateConnectivityRuleRequest. */
                    interface ICreateConnectivityRuleRequest {

                        /** The connectivity rule specification. */
                        spec?: (temporal.api.cloud.connectivityrule.v1.IConnectivityRuleSpec|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a CreateConnectivityRuleRequest. */
                    class CreateConnectivityRuleRequest implements ICreateConnectivityRuleRequest {

                        /**
                         * Constructs a new CreateConnectivityRuleRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateConnectivityRuleRequest);

                        /** The connectivity rule specification. */
                        public spec?: (temporal.api.cloud.connectivityrule.v1.IConnectivityRuleSpec|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * Creates a new CreateConnectivityRuleRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateConnectivityRuleRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateConnectivityRuleRequest): temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleRequest;

                        /**
                         * Encodes the specified CreateConnectivityRuleRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleRequest.verify|verify} messages.
                         * @param message CreateConnectivityRuleRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateConnectivityRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateConnectivityRuleRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleRequest.verify|verify} messages.
                         * @param message CreateConnectivityRuleRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateConnectivityRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateConnectivityRuleRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateConnectivityRuleRequest
                         * @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): temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleRequest;

                        /**
                         * Decodes a CreateConnectivityRuleRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateConnectivityRuleRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleRequest;

                        /**
                         * Creates a CreateConnectivityRuleRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateConnectivityRuleRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleRequest;

                        /**
                         * Creates a plain object from a CreateConnectivityRuleRequest message. Also converts values to other types if specified.
                         * @param message CreateConnectivityRuleRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateConnectivityRuleRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateConnectivityRuleRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CreateConnectivityRuleResponse. */
                    interface ICreateConnectivityRuleResponse {

                        /** The id of the connectivity rule that was created. */
                        connectivityRuleId?: (string|null);

                        /** The async operation */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a CreateConnectivityRuleResponse. */
                    class CreateConnectivityRuleResponse implements ICreateConnectivityRuleResponse {

                        /**
                         * Constructs a new CreateConnectivityRuleResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.ICreateConnectivityRuleResponse);

                        /** The id of the connectivity rule that was created. */
                        public connectivityRuleId: string;

                        /** The async operation */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new CreateConnectivityRuleResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateConnectivityRuleResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.ICreateConnectivityRuleResponse): temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleResponse;

                        /**
                         * Encodes the specified CreateConnectivityRuleResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleResponse.verify|verify} messages.
                         * @param message CreateConnectivityRuleResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.ICreateConnectivityRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateConnectivityRuleResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleResponse.verify|verify} messages.
                         * @param message CreateConnectivityRuleResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.ICreateConnectivityRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateConnectivityRuleResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateConnectivityRuleResponse
                         * @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): temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleResponse;

                        /**
                         * Decodes a CreateConnectivityRuleResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateConnectivityRuleResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleResponse;

                        /**
                         * Creates a CreateConnectivityRuleResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CreateConnectivityRuleResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleResponse;

                        /**
                         * Creates a plain object from a CreateConnectivityRuleResponse message. Also converts values to other types if specified.
                         * @param message CreateConnectivityRuleResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.CreateConnectivityRuleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateConnectivityRuleResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CreateConnectivityRuleResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetConnectivityRuleRequest. */
                    interface IGetConnectivityRuleRequest {

                        /** The id of the connectivity rule to get. */
                        connectivityRuleId?: (string|null);
                    }

                    /** Represents a GetConnectivityRuleRequest. */
                    class GetConnectivityRuleRequest implements IGetConnectivityRuleRequest {

                        /**
                         * Constructs a new GetConnectivityRuleRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetConnectivityRuleRequest);

                        /** The id of the connectivity rule to get. */
                        public connectivityRuleId: string;

                        /**
                         * Creates a new GetConnectivityRuleRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetConnectivityRuleRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetConnectivityRuleRequest): temporal.api.cloud.cloudservice.v1.GetConnectivityRuleRequest;

                        /**
                         * Encodes the specified GetConnectivityRuleRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetConnectivityRuleRequest.verify|verify} messages.
                         * @param message GetConnectivityRuleRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetConnectivityRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetConnectivityRuleRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetConnectivityRuleRequest.verify|verify} messages.
                         * @param message GetConnectivityRuleRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetConnectivityRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetConnectivityRuleRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetConnectivityRuleRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetConnectivityRuleRequest;

                        /**
                         * Decodes a GetConnectivityRuleRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetConnectivityRuleRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetConnectivityRuleRequest;

                        /**
                         * Creates a GetConnectivityRuleRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetConnectivityRuleRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetConnectivityRuleRequest;

                        /**
                         * Creates a plain object from a GetConnectivityRuleRequest message. Also converts values to other types if specified.
                         * @param message GetConnectivityRuleRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetConnectivityRuleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetConnectivityRuleRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetConnectivityRuleRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetConnectivityRuleResponse. */
                    interface IGetConnectivityRuleResponse {

                        /** GetConnectivityRuleResponse connectivityRule */
                        connectivityRule?: (temporal.api.cloud.connectivityrule.v1.IConnectivityRule|null);
                    }

                    /** Represents a GetConnectivityRuleResponse. */
                    class GetConnectivityRuleResponse implements IGetConnectivityRuleResponse {

                        /**
                         * Constructs a new GetConnectivityRuleResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetConnectivityRuleResponse);

                        /** GetConnectivityRuleResponse connectivityRule. */
                        public connectivityRule?: (temporal.api.cloud.connectivityrule.v1.IConnectivityRule|null);

                        /**
                         * Creates a new GetConnectivityRuleResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetConnectivityRuleResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetConnectivityRuleResponse): temporal.api.cloud.cloudservice.v1.GetConnectivityRuleResponse;

                        /**
                         * Encodes the specified GetConnectivityRuleResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetConnectivityRuleResponse.verify|verify} messages.
                         * @param message GetConnectivityRuleResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetConnectivityRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetConnectivityRuleResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetConnectivityRuleResponse.verify|verify} messages.
                         * @param message GetConnectivityRuleResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetConnectivityRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetConnectivityRuleResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetConnectivityRuleResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetConnectivityRuleResponse;

                        /**
                         * Decodes a GetConnectivityRuleResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetConnectivityRuleResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetConnectivityRuleResponse;

                        /**
                         * Creates a GetConnectivityRuleResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetConnectivityRuleResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetConnectivityRuleResponse;

                        /**
                         * Creates a plain object from a GetConnectivityRuleResponse message. Also converts values to other types if specified.
                         * @param message GetConnectivityRuleResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetConnectivityRuleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetConnectivityRuleResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetConnectivityRuleResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetConnectivityRulesRequest. */
                    interface IGetConnectivityRulesRequest {

                        /**
                         * The requested size of the page to retrieve.
                         * Optional, defaults to 100.
                         */
                        pageSize?: (number|null);

                        /**
                         * The page token if this is continuing from another response.
                         * Optional, defaults to empty.
                         */
                        pageToken?: (string|null);

                        /** Filter connectivity rule by the namespace id. */
                        namespace?: (string|null);
                    }

                    /** Represents a GetConnectivityRulesRequest. */
                    class GetConnectivityRulesRequest implements IGetConnectivityRulesRequest {

                        /**
                         * Constructs a new GetConnectivityRulesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetConnectivityRulesRequest);

                        /**
                         * The requested size of the page to retrieve.
                         * Optional, defaults to 100.
                         */
                        public pageSize: number;

                        /**
                         * The page token if this is continuing from another response.
                         * Optional, defaults to empty.
                         */
                        public pageToken: string;

                        /** Filter connectivity rule by the namespace id. */
                        public namespace: string;

                        /**
                         * Creates a new GetConnectivityRulesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetConnectivityRulesRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetConnectivityRulesRequest): temporal.api.cloud.cloudservice.v1.GetConnectivityRulesRequest;

                        /**
                         * Encodes the specified GetConnectivityRulesRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetConnectivityRulesRequest.verify|verify} messages.
                         * @param message GetConnectivityRulesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetConnectivityRulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetConnectivityRulesRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetConnectivityRulesRequest.verify|verify} messages.
                         * @param message GetConnectivityRulesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetConnectivityRulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetConnectivityRulesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetConnectivityRulesRequest
                         * @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): temporal.api.cloud.cloudservice.v1.GetConnectivityRulesRequest;

                        /**
                         * Decodes a GetConnectivityRulesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetConnectivityRulesRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.GetConnectivityRulesRequest;

                        /**
                         * Creates a GetConnectivityRulesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetConnectivityRulesRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetConnectivityRulesRequest;

                        /**
                         * Creates a plain object from a GetConnectivityRulesRequest message. Also converts values to other types if specified.
                         * @param message GetConnectivityRulesRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetConnectivityRulesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetConnectivityRulesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetConnectivityRulesRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GetConnectivityRulesResponse. */
                    interface IGetConnectivityRulesResponse {

                        /** connectivity_rules returned */
                        connectivityRules?: (temporal.api.cloud.connectivityrule.v1.IConnectivityRule[]|null);

                        /** The next page token */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a GetConnectivityRulesResponse. */
                    class GetConnectivityRulesResponse implements IGetConnectivityRulesResponse {

                        /**
                         * Constructs a new GetConnectivityRulesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IGetConnectivityRulesResponse);

                        /** connectivity_rules returned */
                        public connectivityRules: temporal.api.cloud.connectivityrule.v1.IConnectivityRule[];

                        /** The next page token */
                        public nextPageToken: string;

                        /**
                         * Creates a new GetConnectivityRulesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetConnectivityRulesResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IGetConnectivityRulesResponse): temporal.api.cloud.cloudservice.v1.GetConnectivityRulesResponse;

                        /**
                         * Encodes the specified GetConnectivityRulesResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetConnectivityRulesResponse.verify|verify} messages.
                         * @param message GetConnectivityRulesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IGetConnectivityRulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetConnectivityRulesResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.GetConnectivityRulesResponse.verify|verify} messages.
                         * @param message GetConnectivityRulesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IGetConnectivityRulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetConnectivityRulesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetConnectivityRulesResponse
                         * @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): temporal.api.cloud.cloudservice.v1.GetConnectivityRulesResponse;

                        /**
                         * Decodes a GetConnectivityRulesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetConnectivityRulesResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.GetConnectivityRulesResponse;

                        /**
                         * Creates a GetConnectivityRulesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GetConnectivityRulesResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.GetConnectivityRulesResponse;

                        /**
                         * Creates a plain object from a GetConnectivityRulesResponse message. Also converts values to other types if specified.
                         * @param message GetConnectivityRulesResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.GetConnectivityRulesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetConnectivityRulesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GetConnectivityRulesResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteConnectivityRuleRequest. */
                    interface IDeleteConnectivityRuleRequest {

                        /** The ID of the connectivity rule that need be deleted, required. */
                        connectivityRuleId?: (string|null);

                        /**
                         * The resource version which should be the same from the the db, required
                         * The latest version can be found in the GetConnectivityRule operation response
                         */
                        resourceVersion?: (string|null);

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a DeleteConnectivityRuleRequest. */
                    class DeleteConnectivityRuleRequest implements IDeleteConnectivityRuleRequest {

                        /**
                         * Constructs a new DeleteConnectivityRuleRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteConnectivityRuleRequest);

                        /** The ID of the connectivity rule that need be deleted, required. */
                        public connectivityRuleId: string;

                        /**
                         * The resource version which should be the same from the the db, required
                         * The latest version can be found in the GetConnectivityRule operation response
                         */
                        public resourceVersion: string;

                        /**
                         * The id to use for this async operation.
                         * Optional, if not provided a random id will be generated.
                         */
                        public asyncOperationId: string;

                        /**
                         * Creates a new DeleteConnectivityRuleRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteConnectivityRuleRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteConnectivityRuleRequest): temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleRequest;

                        /**
                         * Encodes the specified DeleteConnectivityRuleRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleRequest.verify|verify} messages.
                         * @param message DeleteConnectivityRuleRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteConnectivityRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteConnectivityRuleRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleRequest.verify|verify} messages.
                         * @param message DeleteConnectivityRuleRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteConnectivityRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteConnectivityRuleRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteConnectivityRuleRequest
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleRequest;

                        /**
                         * Decodes a DeleteConnectivityRuleRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteConnectivityRuleRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleRequest;

                        /**
                         * Creates a DeleteConnectivityRuleRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteConnectivityRuleRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleRequest;

                        /**
                         * Creates a plain object from a DeleteConnectivityRuleRequest message. Also converts values to other types if specified.
                         * @param message DeleteConnectivityRuleRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteConnectivityRuleRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteConnectivityRuleRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DeleteConnectivityRuleResponse. */
                    interface IDeleteConnectivityRuleResponse {

                        /** The async operation */
                        asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);
                    }

                    /** Represents a DeleteConnectivityRuleResponse. */
                    class DeleteConnectivityRuleResponse implements IDeleteConnectivityRuleResponse {

                        /**
                         * Constructs a new DeleteConnectivityRuleResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IDeleteConnectivityRuleResponse);

                        /** The async operation */
                        public asyncOperation?: (temporal.api.cloud.operation.v1.IAsyncOperation|null);

                        /**
                         * Creates a new DeleteConnectivityRuleResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteConnectivityRuleResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IDeleteConnectivityRuleResponse): temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleResponse;

                        /**
                         * Encodes the specified DeleteConnectivityRuleResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleResponse.verify|verify} messages.
                         * @param message DeleteConnectivityRuleResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IDeleteConnectivityRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeleteConnectivityRuleResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleResponse.verify|verify} messages.
                         * @param message DeleteConnectivityRuleResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IDeleteConnectivityRuleResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeleteConnectivityRuleResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteConnectivityRuleResponse
                         * @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): temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleResponse;

                        /**
                         * Decodes a DeleteConnectivityRuleResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteConnectivityRuleResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleResponse;

                        /**
                         * Creates a DeleteConnectivityRuleResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DeleteConnectivityRuleResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleResponse;

                        /**
                         * Creates a plain object from a DeleteConnectivityRuleResponse message. Also converts values to other types if specified.
                         * @param message DeleteConnectivityRuleResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.DeleteConnectivityRuleResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeleteConnectivityRuleResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DeleteConnectivityRuleResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ValidateAccountAuditLogSinkRequest. */
                    interface IValidateAccountAuditLogSinkRequest {

                        /** The audit log sink spec that will be validated */
                        spec?: (temporal.api.cloud.account.v1.IAuditLogSinkSpec|null);
                    }

                    /** Represents a ValidateAccountAuditLogSinkRequest. */
                    class ValidateAccountAuditLogSinkRequest implements IValidateAccountAuditLogSinkRequest {

                        /**
                         * Constructs a new ValidateAccountAuditLogSinkRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IValidateAccountAuditLogSinkRequest);

                        /** The audit log sink spec that will be validated */
                        public spec?: (temporal.api.cloud.account.v1.IAuditLogSinkSpec|null);

                        /**
                         * Creates a new ValidateAccountAuditLogSinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ValidateAccountAuditLogSinkRequest instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IValidateAccountAuditLogSinkRequest): temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkRequest;

                        /**
                         * Encodes the specified ValidateAccountAuditLogSinkRequest message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkRequest.verify|verify} messages.
                         * @param message ValidateAccountAuditLogSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IValidateAccountAuditLogSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValidateAccountAuditLogSinkRequest message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkRequest.verify|verify} messages.
                         * @param message ValidateAccountAuditLogSinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IValidateAccountAuditLogSinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValidateAccountAuditLogSinkRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ValidateAccountAuditLogSinkRequest
                         * @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): temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkRequest;

                        /**
                         * Decodes a ValidateAccountAuditLogSinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ValidateAccountAuditLogSinkRequest
                         * @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)): temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkRequest;

                        /**
                         * Creates a ValidateAccountAuditLogSinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ValidateAccountAuditLogSinkRequest
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkRequest;

                        /**
                         * Creates a plain object from a ValidateAccountAuditLogSinkRequest message. Also converts values to other types if specified.
                         * @param message ValidateAccountAuditLogSinkRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValidateAccountAuditLogSinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ValidateAccountAuditLogSinkRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ValidateAccountAuditLogSinkResponse. */
                    interface IValidateAccountAuditLogSinkResponse {
                    }

                    /** Represents a ValidateAccountAuditLogSinkResponse. */
                    class ValidateAccountAuditLogSinkResponse implements IValidateAccountAuditLogSinkResponse {

                        /**
                         * Constructs a new ValidateAccountAuditLogSinkResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.cloudservice.v1.IValidateAccountAuditLogSinkResponse);

                        /**
                         * Creates a new ValidateAccountAuditLogSinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ValidateAccountAuditLogSinkResponse instance
                         */
                        public static create(properties?: temporal.api.cloud.cloudservice.v1.IValidateAccountAuditLogSinkResponse): temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkResponse;

                        /**
                         * Encodes the specified ValidateAccountAuditLogSinkResponse message. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkResponse.verify|verify} messages.
                         * @param message ValidateAccountAuditLogSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.cloudservice.v1.IValidateAccountAuditLogSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValidateAccountAuditLogSinkResponse message, length delimited. Does not implicitly {@link temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkResponse.verify|verify} messages.
                         * @param message ValidateAccountAuditLogSinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.cloudservice.v1.IValidateAccountAuditLogSinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValidateAccountAuditLogSinkResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ValidateAccountAuditLogSinkResponse
                         * @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): temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkResponse;

                        /**
                         * Decodes a ValidateAccountAuditLogSinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ValidateAccountAuditLogSinkResponse
                         * @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)): temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkResponse;

                        /**
                         * Creates a ValidateAccountAuditLogSinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ValidateAccountAuditLogSinkResponse
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkResponse;

                        /**
                         * Creates a plain object from a ValidateAccountAuditLogSinkResponse message. Also converts values to other types if specified.
                         * @param message ValidateAccountAuditLogSinkResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.cloudservice.v1.ValidateAccountAuditLogSinkResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValidateAccountAuditLogSinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ValidateAccountAuditLogSinkResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }
            }

            /** Namespace operation. */
            namespace operation {

                /** Namespace v1. */
                namespace v1 {

                    /** Properties of an AsyncOperation. */
                    interface IAsyncOperation {

                        /** The operation id. */
                        id?: (string|null);

                        /**
                         * The current state of this operation.
                         * Possible values are: pending, in_progress, failed, cancelled, fulfilled.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        stateDeprecated?: (string|null);

                        /**
                         * The current state of this operation.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        state?: (temporal.api.cloud.operation.v1.AsyncOperation.State|null);

                        /** The recommended duration to check back for an update in the operation's state. */
                        checkDuration?: (google.protobuf.IDuration|null);

                        /** The type of operation being performed. */
                        operationType?: (string|null);

                        /**
                         * The input to the operation being performed.
                         *
                         * (-- api-linter: core::0146::any=disabled --)
                         */
                        operationInput?: (google.protobuf.IAny|null);

                        /** If the operation failed, the reason for the failure. */
                        failureReason?: (string|null);

                        /** The date and time when the operation initiated. */
                        startedTime?: (google.protobuf.ITimestamp|null);

                        /** The date and time when the operation completed. */
                        finishedTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents an AsyncOperation. */
                    class AsyncOperation implements IAsyncOperation {

                        /**
                         * Constructs a new AsyncOperation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.operation.v1.IAsyncOperation);

                        /** The operation id. */
                        public id: string;

                        /**
                         * The current state of this operation.
                         * Possible values are: pending, in_progress, failed, cancelled, fulfilled.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public stateDeprecated: string;

                        /**
                         * The current state of this operation.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        public state: temporal.api.cloud.operation.v1.AsyncOperation.State;

                        /** The recommended duration to check back for an update in the operation's state. */
                        public checkDuration?: (google.protobuf.IDuration|null);

                        /** The type of operation being performed. */
                        public operationType: string;

                        /**
                         * The input to the operation being performed.
                         *
                         * (-- api-linter: core::0146::any=disabled --)
                         */
                        public operationInput?: (google.protobuf.IAny|null);

                        /** If the operation failed, the reason for the failure. */
                        public failureReason: string;

                        /** The date and time when the operation initiated. */
                        public startedTime?: (google.protobuf.ITimestamp|null);

                        /** The date and time when the operation completed. */
                        public finishedTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new AsyncOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AsyncOperation instance
                         */
                        public static create(properties?: temporal.api.cloud.operation.v1.IAsyncOperation): temporal.api.cloud.operation.v1.AsyncOperation;

                        /**
                         * Encodes the specified AsyncOperation message. Does not implicitly {@link temporal.api.cloud.operation.v1.AsyncOperation.verify|verify} messages.
                         * @param message AsyncOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.operation.v1.IAsyncOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AsyncOperation message, length delimited. Does not implicitly {@link temporal.api.cloud.operation.v1.AsyncOperation.verify|verify} messages.
                         * @param message AsyncOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.operation.v1.IAsyncOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AsyncOperation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AsyncOperation
                         * @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): temporal.api.cloud.operation.v1.AsyncOperation;

                        /**
                         * Decodes an AsyncOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AsyncOperation
                         * @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)): temporal.api.cloud.operation.v1.AsyncOperation;

                        /**
                         * Creates an AsyncOperation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AsyncOperation
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.operation.v1.AsyncOperation;

                        /**
                         * Creates a plain object from an AsyncOperation message. Also converts values to other types if specified.
                         * @param message AsyncOperation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.operation.v1.AsyncOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AsyncOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AsyncOperation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AsyncOperation {

                        /** State enum. */
                        enum State {
                            STATE_UNSPECIFIED = 0,
                            STATE_PENDING = 1,
                            STATE_IN_PROGRESS = 2,
                            STATE_FAILED = 3,
                            STATE_CANCELLED = 4,
                            STATE_FULFILLED = 5,
                            STATE_REJECTED = 6
                        }
                    }
                }
            }

            /** Namespace identity. */
            namespace identity {

                /** Namespace v1. */
                namespace v1 {

                    /** Properties of an AccountAccess. */
                    interface IAccountAccess {

                        /**
                         * The role on the account, should be one of [owner, admin, developer, financeadmin, read, metricsread]
                         * owner - gives full access to the account, including users, namespaces, and billing
                         * admin - gives full access the account, including users and namespaces
                         * developer - gives access to create namespaces on the account
                         * financeadmin - gives read only access and write access for billing
                         * read - gives read only access to the account
                         * metricsread - gives read only access to all namespace metrics
                         * Deprecated: Not supported after v0.3.0 api version. Use role instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        roleDeprecated?: (string|null);

                        /**
                         * The role on the account.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=role_deprecated
                         */
                        role?: (temporal.api.cloud.identity.v1.AccountAccess.Role|null);
                    }

                    /** Represents an AccountAccess. */
                    class AccountAccess implements IAccountAccess {

                        /**
                         * Constructs a new AccountAccess.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IAccountAccess);

                        /**
                         * The role on the account, should be one of [owner, admin, developer, financeadmin, read, metricsread]
                         * owner - gives full access to the account, including users, namespaces, and billing
                         * admin - gives full access the account, including users and namespaces
                         * developer - gives access to create namespaces on the account
                         * financeadmin - gives read only access and write access for billing
                         * read - gives read only access to the account
                         * metricsread - gives read only access to all namespace metrics
                         * Deprecated: Not supported after v0.3.0 api version. Use role instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public roleDeprecated: string;

                        /**
                         * The role on the account.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=role_deprecated
                         */
                        public role: temporal.api.cloud.identity.v1.AccountAccess.Role;

                        /**
                         * Creates a new AccountAccess instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountAccess instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IAccountAccess): temporal.api.cloud.identity.v1.AccountAccess;

                        /**
                         * Encodes the specified AccountAccess message. Does not implicitly {@link temporal.api.cloud.identity.v1.AccountAccess.verify|verify} messages.
                         * @param message AccountAccess message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IAccountAccess, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountAccess message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.AccountAccess.verify|verify} messages.
                         * @param message AccountAccess message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IAccountAccess, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountAccess message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountAccess
                         * @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): temporal.api.cloud.identity.v1.AccountAccess;

                        /**
                         * Decodes an AccountAccess message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountAccess
                         * @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)): temporal.api.cloud.identity.v1.AccountAccess;

                        /**
                         * Creates an AccountAccess message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountAccess
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.AccountAccess;

                        /**
                         * Creates a plain object from an AccountAccess message. Also converts values to other types if specified.
                         * @param message AccountAccess
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.AccountAccess, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountAccess to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountAccess
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AccountAccess {

                        /** Role enum. */
                        enum Role {
                            ROLE_UNSPECIFIED = 0,
                            ROLE_OWNER = 1,
                            ROLE_ADMIN = 2,
                            ROLE_DEVELOPER = 3,
                            ROLE_FINANCE_ADMIN = 4,
                            ROLE_READ = 5,
                            ROLE_METRICS_READ = 6
                        }
                    }

                    /** Properties of a NamespaceAccess. */
                    interface INamespaceAccess {

                        /**
                         * The permission to the namespace, should be one of [admin, write, read]
                         * admin - gives full access to the namespace, including assigning namespace access to other users
                         * write - gives write access to the namespace configuration and workflows within the namespace
                         * read - gives read only access to the namespace configuration and workflows within the namespace
                         * Deprecated: Not supported after v0.3.0 api version. Use permission instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        permissionDeprecated?: (string|null);

                        /**
                         * The permission to the namespace.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=permission_deprecated
                         */
                        permission?: (temporal.api.cloud.identity.v1.NamespaceAccess.Permission|null);
                    }

                    /** Represents a NamespaceAccess. */
                    class NamespaceAccess implements INamespaceAccess {

                        /**
                         * Constructs a new NamespaceAccess.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.INamespaceAccess);

                        /**
                         * The permission to the namespace, should be one of [admin, write, read]
                         * admin - gives full access to the namespace, including assigning namespace access to other users
                         * write - gives write access to the namespace configuration and workflows within the namespace
                         * read - gives read only access to the namespace configuration and workflows within the namespace
                         * Deprecated: Not supported after v0.3.0 api version. Use permission instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public permissionDeprecated: string;

                        /**
                         * The permission to the namespace.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=permission_deprecated
                         */
                        public permission: temporal.api.cloud.identity.v1.NamespaceAccess.Permission;

                        /**
                         * Creates a new NamespaceAccess instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NamespaceAccess instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.INamespaceAccess): temporal.api.cloud.identity.v1.NamespaceAccess;

                        /**
                         * Encodes the specified NamespaceAccess message. Does not implicitly {@link temporal.api.cloud.identity.v1.NamespaceAccess.verify|verify} messages.
                         * @param message NamespaceAccess message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.INamespaceAccess, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NamespaceAccess message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.NamespaceAccess.verify|verify} messages.
                         * @param message NamespaceAccess message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.INamespaceAccess, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NamespaceAccess message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns NamespaceAccess
                         * @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): temporal.api.cloud.identity.v1.NamespaceAccess;

                        /**
                         * Decodes a NamespaceAccess message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns NamespaceAccess
                         * @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)): temporal.api.cloud.identity.v1.NamespaceAccess;

                        /**
                         * Creates a NamespaceAccess message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NamespaceAccess
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.NamespaceAccess;

                        /**
                         * Creates a plain object from a NamespaceAccess message. Also converts values to other types if specified.
                         * @param message NamespaceAccess
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.NamespaceAccess, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NamespaceAccess to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NamespaceAccess
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace NamespaceAccess {

                        /** Permission enum. */
                        enum Permission {
                            PERMISSION_UNSPECIFIED = 0,
                            PERMISSION_ADMIN = 1,
                            PERMISSION_WRITE = 2,
                            PERMISSION_READ = 3
                        }
                    }

                    /** OwnerType enum. */
                    enum OwnerType {
                        OWNER_TYPE_UNSPECIFIED = 0,
                        OWNER_TYPE_USER = 1,
                        OWNER_TYPE_SERVICE_ACCOUNT = 2
                    }

                    /** Properties of an Access. */
                    interface IAccess {

                        /** The account access */
                        accountAccess?: (temporal.api.cloud.identity.v1.IAccountAccess|null);

                        /**
                         * The map of namespace accesses
                         * The key is the namespace name and the value is the access to the namespace
                         */
                        namespaceAccesses?: ({ [k: string]: temporal.api.cloud.identity.v1.INamespaceAccess }|null);
                    }

                    /** Represents an Access. */
                    class Access implements IAccess {

                        /**
                         * Constructs a new Access.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IAccess);

                        /** The account access */
                        public accountAccess?: (temporal.api.cloud.identity.v1.IAccountAccess|null);

                        /**
                         * The map of namespace accesses
                         * The key is the namespace name and the value is the access to the namespace
                         */
                        public namespaceAccesses: { [k: string]: temporal.api.cloud.identity.v1.INamespaceAccess };

                        /**
                         * Creates a new Access instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Access instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IAccess): temporal.api.cloud.identity.v1.Access;

                        /**
                         * Encodes the specified Access message. Does not implicitly {@link temporal.api.cloud.identity.v1.Access.verify|verify} messages.
                         * @param message Access message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IAccess, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Access message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.Access.verify|verify} messages.
                         * @param message Access message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IAccess, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Access message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Access
                         * @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): temporal.api.cloud.identity.v1.Access;

                        /**
                         * Decodes an Access message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Access
                         * @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)): temporal.api.cloud.identity.v1.Access;

                        /**
                         * Creates an Access message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Access
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.Access;

                        /**
                         * Creates a plain object from an Access message. Also converts values to other types if specified.
                         * @param message Access
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.Access, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Access to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Access
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a NamespaceScopedAccess. */
                    interface INamespaceScopedAccess {

                        /** The namespace the service account is assigned to - immutable. */
                        namespace?: (string|null);

                        /** The namespace access assigned to the service account - mutable. */
                        access?: (temporal.api.cloud.identity.v1.INamespaceAccess|null);
                    }

                    /** Represents a NamespaceScopedAccess. */
                    class NamespaceScopedAccess implements INamespaceScopedAccess {

                        /**
                         * Constructs a new NamespaceScopedAccess.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.INamespaceScopedAccess);

                        /** The namespace the service account is assigned to - immutable. */
                        public namespace: string;

                        /** The namespace access assigned to the service account - mutable. */
                        public access?: (temporal.api.cloud.identity.v1.INamespaceAccess|null);

                        /**
                         * Creates a new NamespaceScopedAccess instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NamespaceScopedAccess instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.INamespaceScopedAccess): temporal.api.cloud.identity.v1.NamespaceScopedAccess;

                        /**
                         * Encodes the specified NamespaceScopedAccess message. Does not implicitly {@link temporal.api.cloud.identity.v1.NamespaceScopedAccess.verify|verify} messages.
                         * @param message NamespaceScopedAccess message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.INamespaceScopedAccess, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NamespaceScopedAccess message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.NamespaceScopedAccess.verify|verify} messages.
                         * @param message NamespaceScopedAccess message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.INamespaceScopedAccess, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NamespaceScopedAccess message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns NamespaceScopedAccess
                         * @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): temporal.api.cloud.identity.v1.NamespaceScopedAccess;

                        /**
                         * Decodes a NamespaceScopedAccess message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns NamespaceScopedAccess
                         * @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)): temporal.api.cloud.identity.v1.NamespaceScopedAccess;

                        /**
                         * Creates a NamespaceScopedAccess message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NamespaceScopedAccess
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.NamespaceScopedAccess;

                        /**
                         * Creates a plain object from a NamespaceScopedAccess message. Also converts values to other types if specified.
                         * @param message NamespaceScopedAccess
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.NamespaceScopedAccess, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NamespaceScopedAccess to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NamespaceScopedAccess
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserSpec. */
                    interface IUserSpec {

                        /** The email address associated to the user */
                        email?: (string|null);

                        /** The access to assigned to the user */
                        access?: (temporal.api.cloud.identity.v1.IAccess|null);
                    }

                    /** Represents a UserSpec. */
                    class UserSpec implements IUserSpec {

                        /**
                         * Constructs a new UserSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IUserSpec);

                        /** The email address associated to the user */
                        public email: string;

                        /** The access to assigned to the user */
                        public access?: (temporal.api.cloud.identity.v1.IAccess|null);

                        /**
                         * Creates a new UserSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IUserSpec): temporal.api.cloud.identity.v1.UserSpec;

                        /**
                         * Encodes the specified UserSpec message. Does not implicitly {@link temporal.api.cloud.identity.v1.UserSpec.verify|verify} messages.
                         * @param message UserSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IUserSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.UserSpec.verify|verify} messages.
                         * @param message UserSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IUserSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserSpec
                         * @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): temporal.api.cloud.identity.v1.UserSpec;

                        /**
                         * Decodes a UserSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserSpec
                         * @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)): temporal.api.cloud.identity.v1.UserSpec;

                        /**
                         * Creates a UserSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.UserSpec;

                        /**
                         * Creates a plain object from a UserSpec message. Also converts values to other types if specified.
                         * @param message UserSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.UserSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an Invitation. */
                    interface IInvitation {

                        /** The date and time when the user was created */
                        createdTime?: (google.protobuf.ITimestamp|null);

                        /** The date and time when the invitation expires or has expired */
                        expiredTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents an Invitation. */
                    class Invitation implements IInvitation {

                        /**
                         * Constructs a new Invitation.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IInvitation);

                        /** The date and time when the user was created */
                        public createdTime?: (google.protobuf.ITimestamp|null);

                        /** The date and time when the invitation expires or has expired */
                        public expiredTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new Invitation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Invitation instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IInvitation): temporal.api.cloud.identity.v1.Invitation;

                        /**
                         * Encodes the specified Invitation message. Does not implicitly {@link temporal.api.cloud.identity.v1.Invitation.verify|verify} messages.
                         * @param message Invitation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IInvitation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Invitation message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.Invitation.verify|verify} messages.
                         * @param message Invitation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IInvitation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Invitation message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Invitation
                         * @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): temporal.api.cloud.identity.v1.Invitation;

                        /**
                         * Decodes an Invitation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Invitation
                         * @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)): temporal.api.cloud.identity.v1.Invitation;

                        /**
                         * Creates an Invitation message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Invitation
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.Invitation;

                        /**
                         * Creates a plain object from an Invitation message. Also converts values to other types if specified.
                         * @param message Invitation
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.Invitation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Invitation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Invitation
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a User. */
                    interface IUser {

                        /** The id of the user */
                        id?: (string|null);

                        /**
                         * The current version of the user specification
                         * The next update operation will have to include this version
                         */
                        resourceVersion?: (string|null);

                        /** The user specification */
                        spec?: (temporal.api.cloud.identity.v1.IUserSpec|null);

                        /**
                         * The current state of the user
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        stateDeprecated?: (string|null);

                        /**
                         * The current state of the user.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        state?: (temporal.api.cloud.resource.v1.ResourceState|null);

                        /** The id of the async operation that is creating/updating/deleting the user, if any */
                        asyncOperationId?: (string|null);

                        /** The details of the open invitation sent to the user, if any */
                        invitation?: (temporal.api.cloud.identity.v1.IInvitation|null);

                        /** The date and time when the user was created */
                        createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The date and time when the user was last modified
                         * Will not be set if the user has never been modified
                         */
                        lastModifiedTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a User. */
                    class User implements IUser {

                        /**
                         * Constructs a new User.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IUser);

                        /** The id of the user */
                        public id: string;

                        /**
                         * The current version of the user specification
                         * The next update operation will have to include this version
                         */
                        public resourceVersion: string;

                        /** The user specification */
                        public spec?: (temporal.api.cloud.identity.v1.IUserSpec|null);

                        /**
                         * The current state of the user
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public stateDeprecated: string;

                        /**
                         * The current state of the user.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        public state: temporal.api.cloud.resource.v1.ResourceState;

                        /** The id of the async operation that is creating/updating/deleting the user, if any */
                        public asyncOperationId: string;

                        /** The details of the open invitation sent to the user, if any */
                        public invitation?: (temporal.api.cloud.identity.v1.IInvitation|null);

                        /** The date and time when the user was created */
                        public createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The date and time when the user was last modified
                         * Will not be set if the user has never been modified
                         */
                        public lastModifiedTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new User instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns User instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IUser): temporal.api.cloud.identity.v1.User;

                        /**
                         * Encodes the specified User message. Does not implicitly {@link temporal.api.cloud.identity.v1.User.verify|verify} messages.
                         * @param message User message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IUser, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified User message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.User.verify|verify} messages.
                         * @param message User message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IUser, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a User message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns User
                         * @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): temporal.api.cloud.identity.v1.User;

                        /**
                         * Decodes a User message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns User
                         * @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)): temporal.api.cloud.identity.v1.User;

                        /**
                         * Creates a User message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns User
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.User;

                        /**
                         * Creates a plain object from a User message. Also converts values to other types if specified.
                         * @param message User
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.User, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this User to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for User
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GoogleGroupSpec. */
                    interface IGoogleGroupSpec {

                        /**
                         * The email address of the Google group.
                         * The email address is immutable. Once set during creation, it cannot be changed.
                         */
                        emailAddress?: (string|null);
                    }

                    /** Represents a GoogleGroupSpec. */
                    class GoogleGroupSpec implements IGoogleGroupSpec {

                        /**
                         * Constructs a new GoogleGroupSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IGoogleGroupSpec);

                        /**
                         * The email address of the Google group.
                         * The email address is immutable. Once set during creation, it cannot be changed.
                         */
                        public emailAddress: string;

                        /**
                         * Creates a new GoogleGroupSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoogleGroupSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IGoogleGroupSpec): temporal.api.cloud.identity.v1.GoogleGroupSpec;

                        /**
                         * Encodes the specified GoogleGroupSpec message. Does not implicitly {@link temporal.api.cloud.identity.v1.GoogleGroupSpec.verify|verify} messages.
                         * @param message GoogleGroupSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IGoogleGroupSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleGroupSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.GoogleGroupSpec.verify|verify} messages.
                         * @param message GoogleGroupSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IGoogleGroupSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleGroupSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GoogleGroupSpec
                         * @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): temporal.api.cloud.identity.v1.GoogleGroupSpec;

                        /**
                         * Decodes a GoogleGroupSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoogleGroupSpec
                         * @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)): temporal.api.cloud.identity.v1.GoogleGroupSpec;

                        /**
                         * Creates a GoogleGroupSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GoogleGroupSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.GoogleGroupSpec;

                        /**
                         * Creates a plain object from a GoogleGroupSpec message. Also converts values to other types if specified.
                         * @param message GoogleGroupSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.GoogleGroupSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleGroupSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GoogleGroupSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a SCIMGroupSpec. */
                    interface ISCIMGroupSpec {

                        /** The id used in the upstream identity provider. */
                        idpId?: (string|null);
                    }

                    /** Represents a SCIMGroupSpec. */
                    class SCIMGroupSpec implements ISCIMGroupSpec {

                        /**
                         * Constructs a new SCIMGroupSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.ISCIMGroupSpec);

                        /** The id used in the upstream identity provider. */
                        public idpId: string;

                        /**
                         * Creates a new SCIMGroupSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SCIMGroupSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.ISCIMGroupSpec): temporal.api.cloud.identity.v1.SCIMGroupSpec;

                        /**
                         * Encodes the specified SCIMGroupSpec message. Does not implicitly {@link temporal.api.cloud.identity.v1.SCIMGroupSpec.verify|verify} messages.
                         * @param message SCIMGroupSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.ISCIMGroupSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SCIMGroupSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.SCIMGroupSpec.verify|verify} messages.
                         * @param message SCIMGroupSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.ISCIMGroupSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SCIMGroupSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SCIMGroupSpec
                         * @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): temporal.api.cloud.identity.v1.SCIMGroupSpec;

                        /**
                         * Decodes a SCIMGroupSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SCIMGroupSpec
                         * @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)): temporal.api.cloud.identity.v1.SCIMGroupSpec;

                        /**
                         * Creates a SCIMGroupSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SCIMGroupSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.SCIMGroupSpec;

                        /**
                         * Creates a plain object from a SCIMGroupSpec message. Also converts values to other types if specified.
                         * @param message SCIMGroupSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.SCIMGroupSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SCIMGroupSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SCIMGroupSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CloudGroupSpec. */
                    interface ICloudGroupSpec {
                    }

                    /** Represents a CloudGroupSpec. */
                    class CloudGroupSpec implements ICloudGroupSpec {

                        /**
                         * Constructs a new CloudGroupSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.ICloudGroupSpec);

                        /**
                         * Creates a new CloudGroupSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CloudGroupSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.ICloudGroupSpec): temporal.api.cloud.identity.v1.CloudGroupSpec;

                        /**
                         * Encodes the specified CloudGroupSpec message. Does not implicitly {@link temporal.api.cloud.identity.v1.CloudGroupSpec.verify|verify} messages.
                         * @param message CloudGroupSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.ICloudGroupSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CloudGroupSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.CloudGroupSpec.verify|verify} messages.
                         * @param message CloudGroupSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.ICloudGroupSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CloudGroupSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CloudGroupSpec
                         * @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): temporal.api.cloud.identity.v1.CloudGroupSpec;

                        /**
                         * Decodes a CloudGroupSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CloudGroupSpec
                         * @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)): temporal.api.cloud.identity.v1.CloudGroupSpec;

                        /**
                         * Creates a CloudGroupSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CloudGroupSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.CloudGroupSpec;

                        /**
                         * Creates a plain object from a CloudGroupSpec message. Also converts values to other types if specified.
                         * @param message CloudGroupSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.CloudGroupSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CloudGroupSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CloudGroupSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserGroupSpec. */
                    interface IUserGroupSpec {

                        /** The display name of the group. */
                        displayName?: (string|null);

                        /** The access assigned to the group. */
                        access?: (temporal.api.cloud.identity.v1.IAccess|null);

                        /** The specification of the google group that this group is associated with. */
                        googleGroup?: (temporal.api.cloud.identity.v1.IGoogleGroupSpec|null);

                        /**
                         * The specification of the SCIM group that this group is associated with.
                         * SCIM groups cannot be created or deleted directly, but their access can be managed.
                         */
                        scimGroup?: (temporal.api.cloud.identity.v1.ISCIMGroupSpec|null);

                        /**
                         * The specification for a Cloud group. Cloud groups can manage members using
                         * the add and remove member APIs.
                         */
                        cloudGroup?: (temporal.api.cloud.identity.v1.ICloudGroupSpec|null);
                    }

                    /** Represents a UserGroupSpec. */
                    class UserGroupSpec implements IUserGroupSpec {

                        /**
                         * Constructs a new UserGroupSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IUserGroupSpec);

                        /** The display name of the group. */
                        public displayName: string;

                        /** The access assigned to the group. */
                        public access?: (temporal.api.cloud.identity.v1.IAccess|null);

                        /** The specification of the google group that this group is associated with. */
                        public googleGroup?: (temporal.api.cloud.identity.v1.IGoogleGroupSpec|null);

                        /**
                         * The specification of the SCIM group that this group is associated with.
                         * SCIM groups cannot be created or deleted directly, but their access can be managed.
                         */
                        public scimGroup?: (temporal.api.cloud.identity.v1.ISCIMGroupSpec|null);

                        /**
                         * The specification for a Cloud group. Cloud groups can manage members using
                         * the add and remove member APIs.
                         */
                        public cloudGroup?: (temporal.api.cloud.identity.v1.ICloudGroupSpec|null);

                        /** UserGroupSpec groupType. */
                        public groupType?: ("googleGroup"|"scimGroup"|"cloudGroup");

                        /**
                         * Creates a new UserGroupSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserGroupSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IUserGroupSpec): temporal.api.cloud.identity.v1.UserGroupSpec;

                        /**
                         * Encodes the specified UserGroupSpec message. Does not implicitly {@link temporal.api.cloud.identity.v1.UserGroupSpec.verify|verify} messages.
                         * @param message UserGroupSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IUserGroupSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserGroupSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.UserGroupSpec.verify|verify} messages.
                         * @param message UserGroupSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IUserGroupSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserGroupSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserGroupSpec
                         * @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): temporal.api.cloud.identity.v1.UserGroupSpec;

                        /**
                         * Decodes a UserGroupSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserGroupSpec
                         * @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)): temporal.api.cloud.identity.v1.UserGroupSpec;

                        /**
                         * Creates a UserGroupSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserGroupSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.UserGroupSpec;

                        /**
                         * Creates a plain object from a UserGroupSpec message. Also converts values to other types if specified.
                         * @param message UserGroupSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.UserGroupSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserGroupSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserGroupSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserGroup. */
                    interface IUserGroup {

                        /** The id of the group */
                        id?: (string|null);

                        /**
                         * The current version of the group specification
                         * The next update operation will have to include this version
                         */
                        resourceVersion?: (string|null);

                        /** The group specification */
                        spec?: (temporal.api.cloud.identity.v1.IUserGroupSpec|null);

                        /**
                         * The current state of the group.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        stateDeprecated?: (string|null);

                        /**
                         * The current state of the group.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        state?: (temporal.api.cloud.resource.v1.ResourceState|null);

                        /** The id of the async operation that is creating/updating/deleting the group, if any */
                        asyncOperationId?: (string|null);

                        /** The date and time when the group was created */
                        createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The date and time when the group was last modified
                         * Will not be set if the group has never been modified
                         */
                        lastModifiedTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a UserGroup. */
                    class UserGroup implements IUserGroup {

                        /**
                         * Constructs a new UserGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IUserGroup);

                        /** The id of the group */
                        public id: string;

                        /**
                         * The current version of the group specification
                         * The next update operation will have to include this version
                         */
                        public resourceVersion: string;

                        /** The group specification */
                        public spec?: (temporal.api.cloud.identity.v1.IUserGroupSpec|null);

                        /**
                         * The current state of the group.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public stateDeprecated: string;

                        /**
                         * The current state of the group.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        public state: temporal.api.cloud.resource.v1.ResourceState;

                        /** The id of the async operation that is creating/updating/deleting the group, if any */
                        public asyncOperationId: string;

                        /** The date and time when the group was created */
                        public createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The date and time when the group was last modified
                         * Will not be set if the group has never been modified
                         */
                        public lastModifiedTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new UserGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserGroup instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IUserGroup): temporal.api.cloud.identity.v1.UserGroup;

                        /**
                         * Encodes the specified UserGroup message. Does not implicitly {@link temporal.api.cloud.identity.v1.UserGroup.verify|verify} messages.
                         * @param message UserGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IUserGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserGroup message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.UserGroup.verify|verify} messages.
                         * @param message UserGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IUserGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserGroup
                         * @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): temporal.api.cloud.identity.v1.UserGroup;

                        /**
                         * Decodes a UserGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserGroup
                         * @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)): temporal.api.cloud.identity.v1.UserGroup;

                        /**
                         * Creates a UserGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserGroup
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.UserGroup;

                        /**
                         * Creates a plain object from a UserGroup message. Also converts values to other types if specified.
                         * @param message UserGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.UserGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserGroupMemberId. */
                    interface IUserGroupMemberId {

                        /** UserGroupMemberId userId */
                        userId?: (string|null);
                    }

                    /** Represents a UserGroupMemberId. */
                    class UserGroupMemberId implements IUserGroupMemberId {

                        /**
                         * Constructs a new UserGroupMemberId.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IUserGroupMemberId);

                        /** UserGroupMemberId userId. */
                        public userId?: (string|null);

                        /** UserGroupMemberId memberType. */
                        public memberType?: "userId";

                        /**
                         * Creates a new UserGroupMemberId instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserGroupMemberId instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IUserGroupMemberId): temporal.api.cloud.identity.v1.UserGroupMemberId;

                        /**
                         * Encodes the specified UserGroupMemberId message. Does not implicitly {@link temporal.api.cloud.identity.v1.UserGroupMemberId.verify|verify} messages.
                         * @param message UserGroupMemberId message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IUserGroupMemberId, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserGroupMemberId message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.UserGroupMemberId.verify|verify} messages.
                         * @param message UserGroupMemberId message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IUserGroupMemberId, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserGroupMemberId message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserGroupMemberId
                         * @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): temporal.api.cloud.identity.v1.UserGroupMemberId;

                        /**
                         * Decodes a UserGroupMemberId message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserGroupMemberId
                         * @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)): temporal.api.cloud.identity.v1.UserGroupMemberId;

                        /**
                         * Creates a UserGroupMemberId message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserGroupMemberId
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.UserGroupMemberId;

                        /**
                         * Creates a plain object from a UserGroupMemberId message. Also converts values to other types if specified.
                         * @param message UserGroupMemberId
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.UserGroupMemberId, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserGroupMemberId to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserGroupMemberId
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserGroupMember. */
                    interface IUserGroupMember {

                        /** UserGroupMember memberId */
                        memberId?: (temporal.api.cloud.identity.v1.IUserGroupMemberId|null);

                        /** UserGroupMember createdTime */
                        createdTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a UserGroupMember. */
                    class UserGroupMember implements IUserGroupMember {

                        /**
                         * Constructs a new UserGroupMember.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IUserGroupMember);

                        /** UserGroupMember memberId. */
                        public memberId?: (temporal.api.cloud.identity.v1.IUserGroupMemberId|null);

                        /** UserGroupMember createdTime. */
                        public createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new UserGroupMember instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserGroupMember instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IUserGroupMember): temporal.api.cloud.identity.v1.UserGroupMember;

                        /**
                         * Encodes the specified UserGroupMember message. Does not implicitly {@link temporal.api.cloud.identity.v1.UserGroupMember.verify|verify} messages.
                         * @param message UserGroupMember message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IUserGroupMember, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserGroupMember message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.UserGroupMember.verify|verify} messages.
                         * @param message UserGroupMember message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IUserGroupMember, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserGroupMember message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserGroupMember
                         * @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): temporal.api.cloud.identity.v1.UserGroupMember;

                        /**
                         * Decodes a UserGroupMember message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserGroupMember
                         * @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)): temporal.api.cloud.identity.v1.UserGroupMember;

                        /**
                         * Creates a UserGroupMember message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserGroupMember
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.UserGroupMember;

                        /**
                         * Creates a plain object from a UserGroupMember message. Also converts values to other types if specified.
                         * @param message UserGroupMember
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.UserGroupMember, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserGroupMember to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserGroupMember
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ServiceAccount. */
                    interface IServiceAccount {

                        /** The id of the service account. */
                        id?: (string|null);

                        /**
                         * The current version of the service account specification.
                         * The next update operation will have to include this version.
                         */
                        resourceVersion?: (string|null);

                        /** The service account specification. */
                        spec?: (temporal.api.cloud.identity.v1.IServiceAccountSpec|null);

                        /**
                         * The current state of the service account.
                         * Possible values: activating, activationfailed, active, updating, updatefailed, deleting, deletefailed, deleted, suspending, suspendfailed, suspended.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        stateDeprecated?: (string|null);

                        /**
                         * The current state of the service account.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        state?: (temporal.api.cloud.resource.v1.ResourceState|null);

                        /** The id of the async operation that is creating/updating/deleting the service account, if any. */
                        asyncOperationId?: (string|null);

                        /** The date and time when the service account was created. */
                        createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The date and time when the service account was last modified
                         * Will not be set if the service account has never been modified.
                         */
                        lastModifiedTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a ServiceAccount. */
                    class ServiceAccount implements IServiceAccount {

                        /**
                         * Constructs a new ServiceAccount.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IServiceAccount);

                        /** The id of the service account. */
                        public id: string;

                        /**
                         * The current version of the service account specification.
                         * The next update operation will have to include this version.
                         */
                        public resourceVersion: string;

                        /** The service account specification. */
                        public spec?: (temporal.api.cloud.identity.v1.IServiceAccountSpec|null);

                        /**
                         * The current state of the service account.
                         * Possible values: activating, activationfailed, active, updating, updatefailed, deleting, deletefailed, deleted, suspending, suspendfailed, suspended.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public stateDeprecated: string;

                        /**
                         * The current state of the service account.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        public state: temporal.api.cloud.resource.v1.ResourceState;

                        /** The id of the async operation that is creating/updating/deleting the service account, if any. */
                        public asyncOperationId: string;

                        /** The date and time when the service account was created. */
                        public createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The date and time when the service account was last modified
                         * Will not be set if the service account has never been modified.
                         */
                        public lastModifiedTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new ServiceAccount instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ServiceAccount instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IServiceAccount): temporal.api.cloud.identity.v1.ServiceAccount;

                        /**
                         * Encodes the specified ServiceAccount message. Does not implicitly {@link temporal.api.cloud.identity.v1.ServiceAccount.verify|verify} messages.
                         * @param message ServiceAccount message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IServiceAccount, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ServiceAccount message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.ServiceAccount.verify|verify} messages.
                         * @param message ServiceAccount message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IServiceAccount, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ServiceAccount message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ServiceAccount
                         * @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): temporal.api.cloud.identity.v1.ServiceAccount;

                        /**
                         * Decodes a ServiceAccount message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ServiceAccount
                         * @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)): temporal.api.cloud.identity.v1.ServiceAccount;

                        /**
                         * Creates a ServiceAccount message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ServiceAccount
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.ServiceAccount;

                        /**
                         * Creates a plain object from a ServiceAccount message. Also converts values to other types if specified.
                         * @param message ServiceAccount
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.ServiceAccount, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ServiceAccount to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ServiceAccount
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ServiceAccountSpec. */
                    interface IServiceAccountSpec {

                        /**
                         * The name associated with the service account.
                         * The name is mutable, but must be unique across all your active service accounts.
                         */
                        name?: (string|null);

                        /**
                         * Note: one of `Access` or `NamespaceScopedAccess` must be provided, but not both.
                         * The access assigned to the service account.
                         * If set, creates an account scoped service account.
                         * The access is mutable.
                         */
                        access?: (temporal.api.cloud.identity.v1.IAccess|null);

                        /**
                         * The namespace scoped access assigned to the service account.
                         * If set, creates a namespace scoped service account (limited to a single namespace).
                         * The namespace scoped access is partially mutable.
                         * Refer to `NamespaceScopedAccess` for details.
                         */
                        namespaceScopedAccess?: (temporal.api.cloud.identity.v1.INamespaceScopedAccess|null);

                        /**
                         * The description associated with the service account - optional.
                         * The description is mutable.
                         */
                        description?: (string|null);
                    }

                    /** Represents a ServiceAccountSpec. */
                    class ServiceAccountSpec implements IServiceAccountSpec {

                        /**
                         * Constructs a new ServiceAccountSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IServiceAccountSpec);

                        /**
                         * The name associated with the service account.
                         * The name is mutable, but must be unique across all your active service accounts.
                         */
                        public name: string;

                        /**
                         * Note: one of `Access` or `NamespaceScopedAccess` must be provided, but not both.
                         * The access assigned to the service account.
                         * If set, creates an account scoped service account.
                         * The access is mutable.
                         */
                        public access?: (temporal.api.cloud.identity.v1.IAccess|null);

                        /**
                         * The namespace scoped access assigned to the service account.
                         * If set, creates a namespace scoped service account (limited to a single namespace).
                         * The namespace scoped access is partially mutable.
                         * Refer to `NamespaceScopedAccess` for details.
                         */
                        public namespaceScopedAccess?: (temporal.api.cloud.identity.v1.INamespaceScopedAccess|null);

                        /**
                         * The description associated with the service account - optional.
                         * The description is mutable.
                         */
                        public description: string;

                        /**
                         * Creates a new ServiceAccountSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ServiceAccountSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IServiceAccountSpec): temporal.api.cloud.identity.v1.ServiceAccountSpec;

                        /**
                         * Encodes the specified ServiceAccountSpec message. Does not implicitly {@link temporal.api.cloud.identity.v1.ServiceAccountSpec.verify|verify} messages.
                         * @param message ServiceAccountSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IServiceAccountSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ServiceAccountSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.ServiceAccountSpec.verify|verify} messages.
                         * @param message ServiceAccountSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IServiceAccountSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ServiceAccountSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ServiceAccountSpec
                         * @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): temporal.api.cloud.identity.v1.ServiceAccountSpec;

                        /**
                         * Decodes a ServiceAccountSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ServiceAccountSpec
                         * @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)): temporal.api.cloud.identity.v1.ServiceAccountSpec;

                        /**
                         * Creates a ServiceAccountSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ServiceAccountSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.ServiceAccountSpec;

                        /**
                         * Creates a plain object from a ServiceAccountSpec message. Also converts values to other types if specified.
                         * @param message ServiceAccountSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.ServiceAccountSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ServiceAccountSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ServiceAccountSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ApiKey. */
                    interface IApiKey {

                        /** The id of the API Key. */
                        id?: (string|null);

                        /**
                         * The current version of the API key specification.
                         * The next update operation will have to include this version.
                         */
                        resourceVersion?: (string|null);

                        /** The API key specification. */
                        spec?: (temporal.api.cloud.identity.v1.IApiKeySpec|null);

                        /**
                         * The current state of the API key.
                         * Possible values: activating, activationfailed, active, updating, updatefailed, deleting, deletefailed, deleted, suspending, suspendfailed, suspended.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        stateDeprecated?: (string|null);

                        /**
                         * The current state of the API key.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        state?: (temporal.api.cloud.resource.v1.ResourceState|null);

                        /** The id of the async operation that is creating/updating/deleting the API key, if any. */
                        asyncOperationId?: (string|null);

                        /** The date and time when the API key was created. */
                        createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The date and time when the API key was last modified.
                         * Will not be set if the API key has never been modified.
                         */
                        lastModifiedTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents an ApiKey. */
                    class ApiKey implements IApiKey {

                        /**
                         * Constructs a new ApiKey.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IApiKey);

                        /** The id of the API Key. */
                        public id: string;

                        /**
                         * The current version of the API key specification.
                         * The next update operation will have to include this version.
                         */
                        public resourceVersion: string;

                        /** The API key specification. */
                        public spec?: (temporal.api.cloud.identity.v1.IApiKeySpec|null);

                        /**
                         * The current state of the API key.
                         * Possible values: activating, activationfailed, active, updating, updatefailed, deleting, deletefailed, deleted, suspending, suspendfailed, suspended.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public stateDeprecated: string;

                        /**
                         * The current state of the API key.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        public state: temporal.api.cloud.resource.v1.ResourceState;

                        /** The id of the async operation that is creating/updating/deleting the API key, if any. */
                        public asyncOperationId: string;

                        /** The date and time when the API key was created. */
                        public createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The date and time when the API key was last modified.
                         * Will not be set if the API key has never been modified.
                         */
                        public lastModifiedTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new ApiKey instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ApiKey instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IApiKey): temporal.api.cloud.identity.v1.ApiKey;

                        /**
                         * Encodes the specified ApiKey message. Does not implicitly {@link temporal.api.cloud.identity.v1.ApiKey.verify|verify} messages.
                         * @param message ApiKey message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IApiKey, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApiKey message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.ApiKey.verify|verify} messages.
                         * @param message ApiKey message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IApiKey, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApiKey message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ApiKey
                         * @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): temporal.api.cloud.identity.v1.ApiKey;

                        /**
                         * Decodes an ApiKey message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ApiKey
                         * @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)): temporal.api.cloud.identity.v1.ApiKey;

                        /**
                         * Creates an ApiKey message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ApiKey
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.ApiKey;

                        /**
                         * Creates a plain object from an ApiKey message. Also converts values to other types if specified.
                         * @param message ApiKey
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.ApiKey, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApiKey to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ApiKey
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ApiKeySpec. */
                    interface IApiKeySpec {

                        /**
                         * The id of the owner to create the API key for.
                         * The owner id is immutable. Once set during creation, it cannot be changed.
                         * The owner id is the id of the user when the owner type is user.
                         * The owner id is the id of the service account when the owner type is service account.
                         */
                        ownerId?: (string|null);

                        /**
                         * The type of the owner to create the API key for.
                         * The owner type is immutable. Once set during creation, it cannot be changed.
                         * Possible values: user, service-account.
                         * Deprecated: Not supported after v0.3.0 api version. Use owner_type instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        ownerTypeDeprecated?: (string|null);

                        /**
                         * The type of the owner to create the API key for.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=owner_type_deprecated
                         */
                        ownerType?: (temporal.api.cloud.identity.v1.OwnerType|null);

                        /** The display name of the API key. */
                        displayName?: (string|null);

                        /** The description of the API key. */
                        description?: (string|null);

                        /** The expiry time of the API key. */
                        expiryTime?: (google.protobuf.ITimestamp|null);

                        /** True if the API key is disabled. */
                        disabled?: (boolean|null);
                    }

                    /** Represents an ApiKeySpec. */
                    class ApiKeySpec implements IApiKeySpec {

                        /**
                         * Constructs a new ApiKeySpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.identity.v1.IApiKeySpec);

                        /**
                         * The id of the owner to create the API key for.
                         * The owner id is immutable. Once set during creation, it cannot be changed.
                         * The owner id is the id of the user when the owner type is user.
                         * The owner id is the id of the service account when the owner type is service account.
                         */
                        public ownerId: string;

                        /**
                         * The type of the owner to create the API key for.
                         * The owner type is immutable. Once set during creation, it cannot be changed.
                         * Possible values: user, service-account.
                         * Deprecated: Not supported after v0.3.0 api version. Use owner_type instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public ownerTypeDeprecated: string;

                        /**
                         * The type of the owner to create the API key for.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=owner_type_deprecated
                         */
                        public ownerType: temporal.api.cloud.identity.v1.OwnerType;

                        /** The display name of the API key. */
                        public displayName: string;

                        /** The description of the API key. */
                        public description: string;

                        /** The expiry time of the API key. */
                        public expiryTime?: (google.protobuf.ITimestamp|null);

                        /** True if the API key is disabled. */
                        public disabled: boolean;

                        /**
                         * Creates a new ApiKeySpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ApiKeySpec instance
                         */
                        public static create(properties?: temporal.api.cloud.identity.v1.IApiKeySpec): temporal.api.cloud.identity.v1.ApiKeySpec;

                        /**
                         * Encodes the specified ApiKeySpec message. Does not implicitly {@link temporal.api.cloud.identity.v1.ApiKeySpec.verify|verify} messages.
                         * @param message ApiKeySpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.identity.v1.IApiKeySpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApiKeySpec message, length delimited. Does not implicitly {@link temporal.api.cloud.identity.v1.ApiKeySpec.verify|verify} messages.
                         * @param message ApiKeySpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.identity.v1.IApiKeySpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApiKeySpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ApiKeySpec
                         * @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): temporal.api.cloud.identity.v1.ApiKeySpec;

                        /**
                         * Decodes an ApiKeySpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ApiKeySpec
                         * @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)): temporal.api.cloud.identity.v1.ApiKeySpec;

                        /**
                         * Creates an ApiKeySpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ApiKeySpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.identity.v1.ApiKeySpec;

                        /**
                         * Creates a plain object from an ApiKeySpec message. Also converts values to other types if specified.
                         * @param message ApiKeySpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.identity.v1.ApiKeySpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApiKeySpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ApiKeySpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }
            }

            /** Namespace resource. */
            namespace resource {

                /** Namespace v1. */
                namespace v1 {

                    /** ResourceState enum. */
                    enum ResourceState {
                        RESOURCE_STATE_UNSPECIFIED = 0,
                        RESOURCE_STATE_ACTIVATING = 1,
                        RESOURCE_STATE_ACTIVATION_FAILED = 2,
                        RESOURCE_STATE_ACTIVE = 3,
                        RESOURCE_STATE_UPDATING = 4,
                        RESOURCE_STATE_UPDATE_FAILED = 5,
                        RESOURCE_STATE_DELETING = 6,
                        RESOURCE_STATE_DELETE_FAILED = 7,
                        RESOURCE_STATE_DELETED = 8,
                        RESOURCE_STATE_SUSPENDED = 9,
                        RESOURCE_STATE_EXPIRED = 10
                    }
                }
            }

            /** Namespace namespace. */
            namespace namespace {

                /** Namespace v1. */
                namespace v1 {

                    /** Properties of a CertificateFilterSpec. */
                    interface ICertificateFilterSpec {

                        /**
                         * The common_name in the certificate.
                         * Optional, default is empty.
                         */
                        commonName?: (string|null);

                        /**
                         * The organization in the certificate.
                         * Optional, default is empty.
                         */
                        organization?: (string|null);

                        /**
                         * The organizational_unit in the certificate.
                         * Optional, default is empty.
                         */
                        organizationalUnit?: (string|null);

                        /**
                         * The subject_alternative_name in the certificate.
                         * Optional, default is empty.
                         */
                        subjectAlternativeName?: (string|null);
                    }

                    /** Represents a CertificateFilterSpec. */
                    class CertificateFilterSpec implements ICertificateFilterSpec {

                        /**
                         * Constructs a new CertificateFilterSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.ICertificateFilterSpec);

                        /**
                         * The common_name in the certificate.
                         * Optional, default is empty.
                         */
                        public commonName: string;

                        /**
                         * The organization in the certificate.
                         * Optional, default is empty.
                         */
                        public organization: string;

                        /**
                         * The organizational_unit in the certificate.
                         * Optional, default is empty.
                         */
                        public organizationalUnit: string;

                        /**
                         * The subject_alternative_name in the certificate.
                         * Optional, default is empty.
                         */
                        public subjectAlternativeName: string;

                        /**
                         * Creates a new CertificateFilterSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CertificateFilterSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.ICertificateFilterSpec): temporal.api.cloud.namespace.v1.CertificateFilterSpec;

                        /**
                         * Encodes the specified CertificateFilterSpec message. Does not implicitly {@link temporal.api.cloud.namespace.v1.CertificateFilterSpec.verify|verify} messages.
                         * @param message CertificateFilterSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.ICertificateFilterSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CertificateFilterSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.CertificateFilterSpec.verify|verify} messages.
                         * @param message CertificateFilterSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.ICertificateFilterSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CertificateFilterSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CertificateFilterSpec
                         * @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): temporal.api.cloud.namespace.v1.CertificateFilterSpec;

                        /**
                         * Decodes a CertificateFilterSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CertificateFilterSpec
                         * @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)): temporal.api.cloud.namespace.v1.CertificateFilterSpec;

                        /**
                         * Creates a CertificateFilterSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CertificateFilterSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.CertificateFilterSpec;

                        /**
                         * Creates a plain object from a CertificateFilterSpec message. Also converts values to other types if specified.
                         * @param message CertificateFilterSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.CertificateFilterSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CertificateFilterSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CertificateFilterSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MtlsAuthSpec. */
                    interface IMtlsAuthSpec {

                        /**
                         * The base64 encoded ca cert(s) in PEM format that the clients can use for authentication and authorization.
                         * This must only be one value, but the CA can have a chain.
                         *
                         * (-- api-linter: core::0140::base64=disabled --)
                         * Deprecated: Not supported after v0.2.0 api version. Use accepted_client_ca instead.
                         * temporal:versioning:max_version=v0.2.0
                         */
                        acceptedClientCaDeprecated?: (string|null);

                        /**
                         * The ca cert(s) in PEM format that the clients can use for authentication and authorization.
                         * This must only be one value, but the CA can have a chain.
                         * temporal:versioning:min_version=v0.2.0
                         */
                        acceptedClientCa?: (Uint8Array|null);

                        /**
                         * Certificate filters which, if specified, only allow connections from client certificates whose distinguished name properties match at least one of the filters.
                         * This allows limiting access to specific end-entity certificates.
                         * Optional, default is empty.
                         */
                        certificateFilters?: (temporal.api.cloud.namespace.v1.ICertificateFilterSpec[]|null);

                        /**
                         * Flag to enable mTLS auth (default: disabled).
                         * Note: disabling mTLS auth will cause existing mTLS connections to fail.
                         * temporal:versioning:min_version=v0.2.0
                         */
                        enabled?: (boolean|null);
                    }

                    /** Represents a MtlsAuthSpec. */
                    class MtlsAuthSpec implements IMtlsAuthSpec {

                        /**
                         * Constructs a new MtlsAuthSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.IMtlsAuthSpec);

                        /**
                         * The base64 encoded ca cert(s) in PEM format that the clients can use for authentication and authorization.
                         * This must only be one value, but the CA can have a chain.
                         *
                         * (-- api-linter: core::0140::base64=disabled --)
                         * Deprecated: Not supported after v0.2.0 api version. Use accepted_client_ca instead.
                         * temporal:versioning:max_version=v0.2.0
                         */
                        public acceptedClientCaDeprecated: string;

                        /**
                         * The ca cert(s) in PEM format that the clients can use for authentication and authorization.
                         * This must only be one value, but the CA can have a chain.
                         * temporal:versioning:min_version=v0.2.0
                         */
                        public acceptedClientCa: Uint8Array;

                        /**
                         * Certificate filters which, if specified, only allow connections from client certificates whose distinguished name properties match at least one of the filters.
                         * This allows limiting access to specific end-entity certificates.
                         * Optional, default is empty.
                         */
                        public certificateFilters: temporal.api.cloud.namespace.v1.ICertificateFilterSpec[];

                        /**
                         * Flag to enable mTLS auth (default: disabled).
                         * Note: disabling mTLS auth will cause existing mTLS connections to fail.
                         * temporal:versioning:min_version=v0.2.0
                         */
                        public enabled: boolean;

                        /**
                         * Creates a new MtlsAuthSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MtlsAuthSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.IMtlsAuthSpec): temporal.api.cloud.namespace.v1.MtlsAuthSpec;

                        /**
                         * Encodes the specified MtlsAuthSpec message. Does not implicitly {@link temporal.api.cloud.namespace.v1.MtlsAuthSpec.verify|verify} messages.
                         * @param message MtlsAuthSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.IMtlsAuthSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MtlsAuthSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.MtlsAuthSpec.verify|verify} messages.
                         * @param message MtlsAuthSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.IMtlsAuthSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MtlsAuthSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MtlsAuthSpec
                         * @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): temporal.api.cloud.namespace.v1.MtlsAuthSpec;

                        /**
                         * Decodes a MtlsAuthSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MtlsAuthSpec
                         * @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)): temporal.api.cloud.namespace.v1.MtlsAuthSpec;

                        /**
                         * Creates a MtlsAuthSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MtlsAuthSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.MtlsAuthSpec;

                        /**
                         * Creates a plain object from a MtlsAuthSpec message. Also converts values to other types if specified.
                         * @param message MtlsAuthSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.MtlsAuthSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MtlsAuthSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MtlsAuthSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ApiKeyAuthSpec. */
                    interface IApiKeyAuthSpec {

                        /**
                         * Flag to enable API key auth (default: disabled).
                         * Note: disabling API key auth will cause existing API key connections to fail.
                         */
                        enabled?: (boolean|null);
                    }

                    /** Represents an ApiKeyAuthSpec. */
                    class ApiKeyAuthSpec implements IApiKeyAuthSpec {

                        /**
                         * Constructs a new ApiKeyAuthSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.IApiKeyAuthSpec);

                        /**
                         * Flag to enable API key auth (default: disabled).
                         * Note: disabling API key auth will cause existing API key connections to fail.
                         */
                        public enabled: boolean;

                        /**
                         * Creates a new ApiKeyAuthSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ApiKeyAuthSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.IApiKeyAuthSpec): temporal.api.cloud.namespace.v1.ApiKeyAuthSpec;

                        /**
                         * Encodes the specified ApiKeyAuthSpec message. Does not implicitly {@link temporal.api.cloud.namespace.v1.ApiKeyAuthSpec.verify|verify} messages.
                         * @param message ApiKeyAuthSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.IApiKeyAuthSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApiKeyAuthSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.ApiKeyAuthSpec.verify|verify} messages.
                         * @param message ApiKeyAuthSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.IApiKeyAuthSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApiKeyAuthSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ApiKeyAuthSpec
                         * @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): temporal.api.cloud.namespace.v1.ApiKeyAuthSpec;

                        /**
                         * Decodes an ApiKeyAuthSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ApiKeyAuthSpec
                         * @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)): temporal.api.cloud.namespace.v1.ApiKeyAuthSpec;

                        /**
                         * Creates an ApiKeyAuthSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ApiKeyAuthSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.ApiKeyAuthSpec;

                        /**
                         * Creates a plain object from an ApiKeyAuthSpec message. Also converts values to other types if specified.
                         * @param message ApiKeyAuthSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.ApiKeyAuthSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApiKeyAuthSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ApiKeyAuthSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a CodecServerSpec. */
                    interface ICodecServerSpec {

                        /** The codec server endpoint. */
                        endpoint?: (string|null);

                        /** Whether to pass the user access token with your endpoint. */
                        passAccessToken?: (boolean|null);

                        /** Whether to include cross-origin credentials. */
                        includeCrossOriginCredentials?: (boolean|null);

                        /**
                         * A custom error message to display for remote codec server errors.
                         * temporal:versioning:min_version=v0.5.1
                         */
                        customErrorMessage?: (temporal.api.cloud.namespace.v1.CodecServerSpec.ICustomErrorMessage|null);
                    }

                    /** Represents a CodecServerSpec. */
                    class CodecServerSpec implements ICodecServerSpec {

                        /**
                         * Constructs a new CodecServerSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.ICodecServerSpec);

                        /** The codec server endpoint. */
                        public endpoint: string;

                        /** Whether to pass the user access token with your endpoint. */
                        public passAccessToken: boolean;

                        /** Whether to include cross-origin credentials. */
                        public includeCrossOriginCredentials: boolean;

                        /**
                         * A custom error message to display for remote codec server errors.
                         * temporal:versioning:min_version=v0.5.1
                         */
                        public customErrorMessage?: (temporal.api.cloud.namespace.v1.CodecServerSpec.ICustomErrorMessage|null);

                        /**
                         * Creates a new CodecServerSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CodecServerSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.ICodecServerSpec): temporal.api.cloud.namespace.v1.CodecServerSpec;

                        /**
                         * Encodes the specified CodecServerSpec message. Does not implicitly {@link temporal.api.cloud.namespace.v1.CodecServerSpec.verify|verify} messages.
                         * @param message CodecServerSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.ICodecServerSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CodecServerSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.CodecServerSpec.verify|verify} messages.
                         * @param message CodecServerSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.ICodecServerSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CodecServerSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CodecServerSpec
                         * @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): temporal.api.cloud.namespace.v1.CodecServerSpec;

                        /**
                         * Decodes a CodecServerSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CodecServerSpec
                         * @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)): temporal.api.cloud.namespace.v1.CodecServerSpec;

                        /**
                         * Creates a CodecServerSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CodecServerSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.CodecServerSpec;

                        /**
                         * Creates a plain object from a CodecServerSpec message. Also converts values to other types if specified.
                         * @param message CodecServerSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.CodecServerSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CodecServerSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CodecServerSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace CodecServerSpec {

                        /** Properties of a CustomErrorMessage. */
                        interface ICustomErrorMessage {

                            /** The error message to display by default for any remote codec server errors. */
                            "default"?: (temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.IErrorMessage|null);
                        }

                        /** Represents a CustomErrorMessage. */
                        class CustomErrorMessage implements ICustomErrorMessage {

                            /**
                             * Constructs a new CustomErrorMessage.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: temporal.api.cloud.namespace.v1.CodecServerSpec.ICustomErrorMessage);

                            /** The error message to display by default for any remote codec server errors. */
                            public default?: (temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.IErrorMessage|null);

                            /**
                             * Creates a new CustomErrorMessage instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CustomErrorMessage instance
                             */
                            public static create(properties?: temporal.api.cloud.namespace.v1.CodecServerSpec.ICustomErrorMessage): temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage;

                            /**
                             * Encodes the specified CustomErrorMessage message. Does not implicitly {@link temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.verify|verify} messages.
                             * @param message CustomErrorMessage message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: temporal.api.cloud.namespace.v1.CodecServerSpec.ICustomErrorMessage, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CustomErrorMessage message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.verify|verify} messages.
                             * @param message CustomErrorMessage message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: temporal.api.cloud.namespace.v1.CodecServerSpec.ICustomErrorMessage, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CustomErrorMessage message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns CustomErrorMessage
                             * @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): temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage;

                            /**
                             * Decodes a CustomErrorMessage message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CustomErrorMessage
                             * @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)): temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage;

                            /**
                             * Creates a CustomErrorMessage message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns CustomErrorMessage
                             */
                            public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage;

                            /**
                             * Creates a plain object from a CustomErrorMessage message. Also converts values to other types if specified.
                             * @param message CustomErrorMessage
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CustomErrorMessage to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for CustomErrorMessage
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace CustomErrorMessage {

                            /** Properties of an ErrorMessage. */
                            interface IErrorMessage {

                                /** A message to display. */
                                message?: (string|null);

                                /** A link that is displayed along side the configured message. */
                                link?: (string|null);
                            }

                            /** Represents an ErrorMessage. */
                            class ErrorMessage implements IErrorMessage {

                                /**
                                 * Constructs a new ErrorMessage.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.IErrorMessage);

                                /** A message to display. */
                                public message: string;

                                /** A link that is displayed along side the configured message. */
                                public link: string;

                                /**
                                 * Creates a new ErrorMessage instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns ErrorMessage instance
                                 */
                                public static create(properties?: temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.IErrorMessage): temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.ErrorMessage;

                                /**
                                 * Encodes the specified ErrorMessage message. Does not implicitly {@link temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.ErrorMessage.verify|verify} messages.
                                 * @param message ErrorMessage message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.IErrorMessage, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified ErrorMessage message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.ErrorMessage.verify|verify} messages.
                                 * @param message ErrorMessage message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.IErrorMessage, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes an ErrorMessage message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns ErrorMessage
                                 * @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): temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.ErrorMessage;

                                /**
                                 * Decodes an ErrorMessage message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns ErrorMessage
                                 * @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)): temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.ErrorMessage;

                                /**
                                 * Creates an ErrorMessage message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns ErrorMessage
                                 */
                                public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.ErrorMessage;

                                /**
                                 * Creates a plain object from an ErrorMessage message. Also converts values to other types if specified.
                                 * @param message ErrorMessage
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: temporal.api.cloud.namespace.v1.CodecServerSpec.CustomErrorMessage.ErrorMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this ErrorMessage to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for ErrorMessage
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }
                    }

                    /** Properties of a LifecycleSpec. */
                    interface ILifecycleSpec {

                        /** Flag to enable delete protection for the namespace. */
                        enableDeleteProtection?: (boolean|null);
                    }

                    /** Represents a LifecycleSpec. */
                    class LifecycleSpec implements ILifecycleSpec {

                        /**
                         * Constructs a new LifecycleSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.ILifecycleSpec);

                        /** Flag to enable delete protection for the namespace. */
                        public enableDeleteProtection: boolean;

                        /**
                         * Creates a new LifecycleSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LifecycleSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.ILifecycleSpec): temporal.api.cloud.namespace.v1.LifecycleSpec;

                        /**
                         * Encodes the specified LifecycleSpec message. Does not implicitly {@link temporal.api.cloud.namespace.v1.LifecycleSpec.verify|verify} messages.
                         * @param message LifecycleSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.ILifecycleSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LifecycleSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.LifecycleSpec.verify|verify} messages.
                         * @param message LifecycleSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.ILifecycleSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LifecycleSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LifecycleSpec
                         * @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): temporal.api.cloud.namespace.v1.LifecycleSpec;

                        /**
                         * Decodes a LifecycleSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LifecycleSpec
                         * @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)): temporal.api.cloud.namespace.v1.LifecycleSpec;

                        /**
                         * Creates a LifecycleSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LifecycleSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.LifecycleSpec;

                        /**
                         * Creates a plain object from a LifecycleSpec message. Also converts values to other types if specified.
                         * @param message LifecycleSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.LifecycleSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LifecycleSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LifecycleSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a HighAvailabilitySpec. */
                    interface IHighAvailabilitySpec {

                        /** Flag to disable managed failover for the namespace. */
                        disableManagedFailover?: (boolean|null);
                    }

                    /** Represents a HighAvailabilitySpec. */
                    class HighAvailabilitySpec implements IHighAvailabilitySpec {

                        /**
                         * Constructs a new HighAvailabilitySpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.IHighAvailabilitySpec);

                        /** Flag to disable managed failover for the namespace. */
                        public disableManagedFailover: boolean;

                        /**
                         * Creates a new HighAvailabilitySpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HighAvailabilitySpec instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.IHighAvailabilitySpec): temporal.api.cloud.namespace.v1.HighAvailabilitySpec;

                        /**
                         * Encodes the specified HighAvailabilitySpec message. Does not implicitly {@link temporal.api.cloud.namespace.v1.HighAvailabilitySpec.verify|verify} messages.
                         * @param message HighAvailabilitySpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.IHighAvailabilitySpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HighAvailabilitySpec message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.HighAvailabilitySpec.verify|verify} messages.
                         * @param message HighAvailabilitySpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.IHighAvailabilitySpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HighAvailabilitySpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns HighAvailabilitySpec
                         * @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): temporal.api.cloud.namespace.v1.HighAvailabilitySpec;

                        /**
                         * Decodes a HighAvailabilitySpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HighAvailabilitySpec
                         * @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)): temporal.api.cloud.namespace.v1.HighAvailabilitySpec;

                        /**
                         * Creates a HighAvailabilitySpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns HighAvailabilitySpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.HighAvailabilitySpec;

                        /**
                         * Creates a plain object from a HighAvailabilitySpec message. Also converts values to other types if specified.
                         * @param message HighAvailabilitySpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.HighAvailabilitySpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HighAvailabilitySpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for HighAvailabilitySpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a NamespaceSpec. */
                    interface INamespaceSpec {

                        /**
                         * The name to use for the namespace.
                         * This will create a namespace that's available at '<name>.<account>.tmprl.cloud:7233'.
                         * The name is immutable. Once set, it cannot be changed.
                         */
                        name?: (string|null);

                        /**
                         * The ids of the regions where the namespace should be available.
                         * The GetRegions API can be used to get the list of valid region ids.
                         * Specifying more than one region makes the namespace "global", which is currently a preview only feature with restricted access.
                         * Please reach out to Temporal support for more information on global namespaces.
                         * When provisioned the global namespace will be active on the first region in the list and passive on the rest.
                         * Number of supported regions is 2.
                         * The regions is immutable. Once set, it cannot be changed.
                         * Example: ["aws-us-west-2"].
                         */
                        regions?: (string[]|null);

                        /**
                         * The number of days the workflows data will be retained for.
                         * Changes to the retention period may impact your storage costs.
                         * Any changes to the retention period will be applied to all new running workflows.
                         */
                        retentionDays?: (number|null);

                        /**
                         * The mTLS auth configuration for the namespace.
                         * If unspecified, mTLS will be disabled.
                         */
                        mtlsAuth?: (temporal.api.cloud.namespace.v1.IMtlsAuthSpec|null);

                        /**
                         * The API key auth configuration for the namespace.
                         * If unspecified, API keys will be disabled.
                         * temporal:versioning:min_version=v0.2.0
                         */
                        apiKeyAuth?: (temporal.api.cloud.namespace.v1.IApiKeyAuthSpec|null);

                        /**
                         * The custom search attributes to use for the namespace.
                         * The name of the attribute is the key and the type is the value.
                         * Supported attribute types: text, keyword, int, double, bool, datetime, keyword_list.
                         * NOTE: currently deleting a search attribute is not supported.
                         * Optional, default is empty.
                         * Deprecated: Not supported after v0.3.0 api version. Use search_attributes instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        customSearchAttributes?: ({ [k: string]: string }|null);

                        /**
                         * The custom search attributes to use for the namespace.
                         * The name of the attribute is the key and the type is the value.
                         * Note: currently deleting a search attribute is not supported.
                         * Optional, default is empty.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=custom_search_attributes
                         */
                        searchAttributes?: ({ [k: string]: temporal.api.cloud.namespace.v1.NamespaceSpec.SearchAttributeType }|null);

                        /**
                         * Codec server spec used by UI to decode payloads for all users interacting with this namespace.
                         * Optional, default is unset.
                         */
                        codecServer?: (temporal.api.cloud.namespace.v1.ICodecServerSpec|null);

                        /**
                         * The lifecycle configuration for the namespace.
                         * temporal:versioning:min_version=v0.4.0
                         */
                        lifecycle?: (temporal.api.cloud.namespace.v1.ILifecycleSpec|null);

                        /**
                         * The high availability configuration for the namespace.
                         * temporal:versioning:min_version=v0.4.0
                         */
                        highAvailability?: (temporal.api.cloud.namespace.v1.IHighAvailabilitySpec|null);

                        /**
                         * The private connectivity configuration for the namespace.
                         * This will apply the connectivity rules specified to the namespace.
                         * temporal:versioning:min_version=v0.6.0
                         */
                        connectivityRuleIds?: (string[]|null);
                    }

                    /** Represents a NamespaceSpec. */
                    class NamespaceSpec implements INamespaceSpec {

                        /**
                         * Constructs a new NamespaceSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.INamespaceSpec);

                        /**
                         * The name to use for the namespace.
                         * This will create a namespace that's available at '<name>.<account>.tmprl.cloud:7233'.
                         * The name is immutable. Once set, it cannot be changed.
                         */
                        public name: string;

                        /**
                         * The ids of the regions where the namespace should be available.
                         * The GetRegions API can be used to get the list of valid region ids.
                         * Specifying more than one region makes the namespace "global", which is currently a preview only feature with restricted access.
                         * Please reach out to Temporal support for more information on global namespaces.
                         * When provisioned the global namespace will be active on the first region in the list and passive on the rest.
                         * Number of supported regions is 2.
                         * The regions is immutable. Once set, it cannot be changed.
                         * Example: ["aws-us-west-2"].
                         */
                        public regions: string[];

                        /**
                         * The number of days the workflows data will be retained for.
                         * Changes to the retention period may impact your storage costs.
                         * Any changes to the retention period will be applied to all new running workflows.
                         */
                        public retentionDays: number;

                        /**
                         * The mTLS auth configuration for the namespace.
                         * If unspecified, mTLS will be disabled.
                         */
                        public mtlsAuth?: (temporal.api.cloud.namespace.v1.IMtlsAuthSpec|null);

                        /**
                         * The API key auth configuration for the namespace.
                         * If unspecified, API keys will be disabled.
                         * temporal:versioning:min_version=v0.2.0
                         */
                        public apiKeyAuth?: (temporal.api.cloud.namespace.v1.IApiKeyAuthSpec|null);

                        /**
                         * The custom search attributes to use for the namespace.
                         * The name of the attribute is the key and the type is the value.
                         * Supported attribute types: text, keyword, int, double, bool, datetime, keyword_list.
                         * NOTE: currently deleting a search attribute is not supported.
                         * Optional, default is empty.
                         * Deprecated: Not supported after v0.3.0 api version. Use search_attributes instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public customSearchAttributes: { [k: string]: string };

                        /**
                         * The custom search attributes to use for the namespace.
                         * The name of the attribute is the key and the type is the value.
                         * Note: currently deleting a search attribute is not supported.
                         * Optional, default is empty.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=custom_search_attributes
                         */
                        public searchAttributes: { [k: string]: temporal.api.cloud.namespace.v1.NamespaceSpec.SearchAttributeType };

                        /**
                         * Codec server spec used by UI to decode payloads for all users interacting with this namespace.
                         * Optional, default is unset.
                         */
                        public codecServer?: (temporal.api.cloud.namespace.v1.ICodecServerSpec|null);

                        /**
                         * The lifecycle configuration for the namespace.
                         * temporal:versioning:min_version=v0.4.0
                         */
                        public lifecycle?: (temporal.api.cloud.namespace.v1.ILifecycleSpec|null);

                        /**
                         * The high availability configuration for the namespace.
                         * temporal:versioning:min_version=v0.4.0
                         */
                        public highAvailability?: (temporal.api.cloud.namespace.v1.IHighAvailabilitySpec|null);

                        /**
                         * The private connectivity configuration for the namespace.
                         * This will apply the connectivity rules specified to the namespace.
                         * temporal:versioning:min_version=v0.6.0
                         */
                        public connectivityRuleIds: string[];

                        /**
                         * Creates a new NamespaceSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NamespaceSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.INamespaceSpec): temporal.api.cloud.namespace.v1.NamespaceSpec;

                        /**
                         * Encodes the specified NamespaceSpec message. Does not implicitly {@link temporal.api.cloud.namespace.v1.NamespaceSpec.verify|verify} messages.
                         * @param message NamespaceSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.INamespaceSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NamespaceSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.NamespaceSpec.verify|verify} messages.
                         * @param message NamespaceSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.INamespaceSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NamespaceSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns NamespaceSpec
                         * @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): temporal.api.cloud.namespace.v1.NamespaceSpec;

                        /**
                         * Decodes a NamespaceSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns NamespaceSpec
                         * @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)): temporal.api.cloud.namespace.v1.NamespaceSpec;

                        /**
                         * Creates a NamespaceSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NamespaceSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.NamespaceSpec;

                        /**
                         * Creates a plain object from a NamespaceSpec message. Also converts values to other types if specified.
                         * @param message NamespaceSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.NamespaceSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NamespaceSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NamespaceSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace NamespaceSpec {

                        /** SearchAttributeType enum. */
                        enum SearchAttributeType {
                            SEARCH_ATTRIBUTE_TYPE_UNSPECIFIED = 0,
                            SEARCH_ATTRIBUTE_TYPE_TEXT = 1,
                            SEARCH_ATTRIBUTE_TYPE_KEYWORD = 2,
                            SEARCH_ATTRIBUTE_TYPE_INT = 3,
                            SEARCH_ATTRIBUTE_TYPE_DOUBLE = 4,
                            SEARCH_ATTRIBUTE_TYPE_BOOL = 5,
                            SEARCH_ATTRIBUTE_TYPE_DATETIME = 6,
                            SEARCH_ATTRIBUTE_TYPE_KEYWORD_LIST = 7
                        }
                    }

                    /** Properties of an Endpoints. */
                    interface IEndpoints {

                        /** The web UI address. */
                        webAddress?: (string|null);

                        /** The gRPC address for mTLS client connections (may be empty if mTLS is disabled). */
                        mtlsGrpcAddress?: (string|null);

                        /** The gRPC address for API key client connections (may be empty if API keys are disabled). */
                        grpcAddress?: (string|null);
                    }

                    /** Represents an Endpoints. */
                    class Endpoints implements IEndpoints {

                        /**
                         * Constructs a new Endpoints.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.IEndpoints);

                        /** The web UI address. */
                        public webAddress: string;

                        /** The gRPC address for mTLS client connections (may be empty if mTLS is disabled). */
                        public mtlsGrpcAddress: string;

                        /** The gRPC address for API key client connections (may be empty if API keys are disabled). */
                        public grpcAddress: string;

                        /**
                         * Creates a new Endpoints instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Endpoints instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.IEndpoints): temporal.api.cloud.namespace.v1.Endpoints;

                        /**
                         * Encodes the specified Endpoints message. Does not implicitly {@link temporal.api.cloud.namespace.v1.Endpoints.verify|verify} messages.
                         * @param message Endpoints message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.IEndpoints, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Endpoints message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.Endpoints.verify|verify} messages.
                         * @param message Endpoints message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.IEndpoints, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Endpoints message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Endpoints
                         * @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): temporal.api.cloud.namespace.v1.Endpoints;

                        /**
                         * Decodes an Endpoints message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Endpoints
                         * @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)): temporal.api.cloud.namespace.v1.Endpoints;

                        /**
                         * Creates an Endpoints message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Endpoints
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.Endpoints;

                        /**
                         * Creates a plain object from an Endpoints message. Also converts values to other types if specified.
                         * @param message Endpoints
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.Endpoints, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Endpoints to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Endpoints
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Limits. */
                    interface ILimits {

                        /**
                         * The number of actions per second (APS) that is currently allowed for the namespace.
                         * The namespace may be throttled if its APS exceeds the limit.
                         */
                        actionsPerSecondLimit?: (number|null);
                    }

                    /** Represents a Limits. */
                    class Limits implements ILimits {

                        /**
                         * Constructs a new Limits.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.ILimits);

                        /**
                         * The number of actions per second (APS) that is currently allowed for the namespace.
                         * The namespace may be throttled if its APS exceeds the limit.
                         */
                        public actionsPerSecondLimit: number;

                        /**
                         * Creates a new Limits instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Limits instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.ILimits): temporal.api.cloud.namespace.v1.Limits;

                        /**
                         * Encodes the specified Limits message. Does not implicitly {@link temporal.api.cloud.namespace.v1.Limits.verify|verify} messages.
                         * @param message Limits message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.ILimits, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Limits message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.Limits.verify|verify} messages.
                         * @param message Limits message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.ILimits, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Limits message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Limits
                         * @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): temporal.api.cloud.namespace.v1.Limits;

                        /**
                         * Decodes a Limits message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Limits
                         * @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)): temporal.api.cloud.namespace.v1.Limits;

                        /**
                         * Creates a Limits message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Limits
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.Limits;

                        /**
                         * Creates a plain object from a Limits message. Also converts values to other types if specified.
                         * @param message Limits
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.Limits, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Limits to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Limits
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a AWSPrivateLinkInfo. */
                    interface IAWSPrivateLinkInfo {

                        /** The list of principal arns that are allowed to access the namespace on the private link. */
                        allowedPrincipalArns?: (string[]|null);

                        /** The list of vpc endpoint service names that are associated with the namespace. */
                        vpcEndpointServiceNames?: (string[]|null);
                    }

                    /** Represents a AWSPrivateLinkInfo. */
                    class AWSPrivateLinkInfo implements IAWSPrivateLinkInfo {

                        /**
                         * Constructs a new AWSPrivateLinkInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.IAWSPrivateLinkInfo);

                        /** The list of principal arns that are allowed to access the namespace on the private link. */
                        public allowedPrincipalArns: string[];

                        /** The list of vpc endpoint service names that are associated with the namespace. */
                        public vpcEndpointServiceNames: string[];

                        /**
                         * Creates a new AWSPrivateLinkInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AWSPrivateLinkInfo instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.IAWSPrivateLinkInfo): temporal.api.cloud.namespace.v1.AWSPrivateLinkInfo;

                        /**
                         * Encodes the specified AWSPrivateLinkInfo message. Does not implicitly {@link temporal.api.cloud.namespace.v1.AWSPrivateLinkInfo.verify|verify} messages.
                         * @param message AWSPrivateLinkInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.IAWSPrivateLinkInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AWSPrivateLinkInfo message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.AWSPrivateLinkInfo.verify|verify} messages.
                         * @param message AWSPrivateLinkInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.IAWSPrivateLinkInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a AWSPrivateLinkInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AWSPrivateLinkInfo
                         * @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): temporal.api.cloud.namespace.v1.AWSPrivateLinkInfo;

                        /**
                         * Decodes a AWSPrivateLinkInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AWSPrivateLinkInfo
                         * @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)): temporal.api.cloud.namespace.v1.AWSPrivateLinkInfo;

                        /**
                         * Creates a AWSPrivateLinkInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AWSPrivateLinkInfo
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.AWSPrivateLinkInfo;

                        /**
                         * Creates a plain object from a AWSPrivateLinkInfo message. Also converts values to other types if specified.
                         * @param message AWSPrivateLinkInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.AWSPrivateLinkInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AWSPrivateLinkInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AWSPrivateLinkInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PrivateConnectivity. */
                    interface IPrivateConnectivity {

                        /** The id of the region where the private connectivity applies. */
                        region?: (string|null);

                        /**
                         * The AWS PrivateLink info.
                         * This will only be set for an aws region.
                         */
                        awsPrivateLink?: (temporal.api.cloud.namespace.v1.IAWSPrivateLinkInfo|null);
                    }

                    /** Represents a PrivateConnectivity. */
                    class PrivateConnectivity implements IPrivateConnectivity {

                        /**
                         * Constructs a new PrivateConnectivity.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.IPrivateConnectivity);

                        /** The id of the region where the private connectivity applies. */
                        public region: string;

                        /**
                         * The AWS PrivateLink info.
                         * This will only be set for an aws region.
                         */
                        public awsPrivateLink?: (temporal.api.cloud.namespace.v1.IAWSPrivateLinkInfo|null);

                        /**
                         * Creates a new PrivateConnectivity instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PrivateConnectivity instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.IPrivateConnectivity): temporal.api.cloud.namespace.v1.PrivateConnectivity;

                        /**
                         * Encodes the specified PrivateConnectivity message. Does not implicitly {@link temporal.api.cloud.namespace.v1.PrivateConnectivity.verify|verify} messages.
                         * @param message PrivateConnectivity message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.IPrivateConnectivity, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PrivateConnectivity message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.PrivateConnectivity.verify|verify} messages.
                         * @param message PrivateConnectivity message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.IPrivateConnectivity, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PrivateConnectivity message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PrivateConnectivity
                         * @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): temporal.api.cloud.namespace.v1.PrivateConnectivity;

                        /**
                         * Decodes a PrivateConnectivity message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PrivateConnectivity
                         * @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)): temporal.api.cloud.namespace.v1.PrivateConnectivity;

                        /**
                         * Creates a PrivateConnectivity message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PrivateConnectivity
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.PrivateConnectivity;

                        /**
                         * Creates a plain object from a PrivateConnectivity message. Also converts values to other types if specified.
                         * @param message PrivateConnectivity
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.PrivateConnectivity, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PrivateConnectivity to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PrivateConnectivity
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Namespace. */
                    interface INamespace {

                        /** The namespace identifier. */
                        namespace?: (string|null);

                        /**
                         * The current version of the namespace specification.
                         * The next update operation will have to include this version.
                         */
                        resourceVersion?: (string|null);

                        /** The namespace specification. */
                        spec?: (temporal.api.cloud.namespace.v1.INamespaceSpec|null);

                        /**
                         * The current state of the namespace.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        stateDeprecated?: (string|null);

                        /**
                         * The current state of the namespace.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        state?: (temporal.api.cloud.resource.v1.ResourceState|null);

                        /** The id of the async operation that is creating/updating/deleting the namespace, if any. */
                        asyncOperationId?: (string|null);

                        /** The endpoints for the namespace. */
                        endpoints?: (temporal.api.cloud.namespace.v1.IEndpoints|null);

                        /** The currently active region for the namespace. */
                        activeRegion?: (string|null);

                        /** The limits set on the namespace currently. */
                        limits?: (temporal.api.cloud.namespace.v1.ILimits|null);

                        /** The private connectivities for the namespace, if any. */
                        privateConnectivities?: (temporal.api.cloud.namespace.v1.IPrivateConnectivity[]|null);

                        /** The date and time when the namespace was created. */
                        createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The date and time when the namespace was last modified.
                         * Will not be set if the namespace has never been modified.
                         */
                        lastModifiedTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The status of each region where the namespace is available.
                         * The id of the region is the key and the status is the value of the map.
                         */
                        regionStatus?: ({ [k: string]: temporal.api.cloud.namespace.v1.INamespaceRegionStatus }|null);

                        /** The connectivity rules that are set on this namespace. */
                        connectivityRules?: (temporal.api.cloud.connectivityrule.v1.IConnectivityRule[]|null);

                        /** The tags for the namespace. */
                        tags?: ({ [k: string]: string }|null);
                    }

                    /** Represents a Namespace. */
                    class Namespace implements INamespace {

                        /**
                         * Constructs a new Namespace.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.INamespace);

                        /** The namespace identifier. */
                        public namespace: string;

                        /**
                         * The current version of the namespace specification.
                         * The next update operation will have to include this version.
                         */
                        public resourceVersion: string;

                        /** The namespace specification. */
                        public spec?: (temporal.api.cloud.namespace.v1.INamespaceSpec|null);

                        /**
                         * The current state of the namespace.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public stateDeprecated: string;

                        /**
                         * The current state of the namespace.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        public state: temporal.api.cloud.resource.v1.ResourceState;

                        /** The id of the async operation that is creating/updating/deleting the namespace, if any. */
                        public asyncOperationId: string;

                        /** The endpoints for the namespace. */
                        public endpoints?: (temporal.api.cloud.namespace.v1.IEndpoints|null);

                        /** The currently active region for the namespace. */
                        public activeRegion: string;

                        /** The limits set on the namespace currently. */
                        public limits?: (temporal.api.cloud.namespace.v1.ILimits|null);

                        /** The private connectivities for the namespace, if any. */
                        public privateConnectivities: temporal.api.cloud.namespace.v1.IPrivateConnectivity[];

                        /** The date and time when the namespace was created. */
                        public createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The date and time when the namespace was last modified.
                         * Will not be set if the namespace has never been modified.
                         */
                        public lastModifiedTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * The status of each region where the namespace is available.
                         * The id of the region is the key and the status is the value of the map.
                         */
                        public regionStatus: { [k: string]: temporal.api.cloud.namespace.v1.INamespaceRegionStatus };

                        /** The connectivity rules that are set on this namespace. */
                        public connectivityRules: temporal.api.cloud.connectivityrule.v1.IConnectivityRule[];

                        /** The tags for the namespace. */
                        public tags: { [k: string]: string };

                        /**
                         * Creates a new Namespace instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Namespace instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.INamespace): temporal.api.cloud.namespace.v1.Namespace;

                        /**
                         * Encodes the specified Namespace message. Does not implicitly {@link temporal.api.cloud.namespace.v1.Namespace.verify|verify} messages.
                         * @param message Namespace message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.INamespace, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Namespace message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.Namespace.verify|verify} messages.
                         * @param message Namespace message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.INamespace, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Namespace message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Namespace
                         * @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): temporal.api.cloud.namespace.v1.Namespace;

                        /**
                         * Decodes a Namespace message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Namespace
                         * @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)): temporal.api.cloud.namespace.v1.Namespace;

                        /**
                         * Creates a Namespace message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Namespace
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.Namespace;

                        /**
                         * Creates a plain object from a Namespace message. Also converts values to other types if specified.
                         * @param message Namespace
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.Namespace, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Namespace to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Namespace
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a NamespaceRegionStatus. */
                    interface INamespaceRegionStatus {

                        /**
                         * The current state of the namespace region.
                         * Possible values: adding, active, passive, removing, failed.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        stateDeprecated?: (string|null);

                        /**
                         * The current state of the namespace region.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        state?: (temporal.api.cloud.namespace.v1.NamespaceRegionStatus.State|null);

                        /** The id of the async operation that is making changes to where the namespace is available, if any. */
                        asyncOperationId?: (string|null);
                    }

                    /** Represents a NamespaceRegionStatus. */
                    class NamespaceRegionStatus implements INamespaceRegionStatus {

                        /**
                         * Constructs a new NamespaceRegionStatus.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.INamespaceRegionStatus);

                        /**
                         * The current state of the namespace region.
                         * Possible values: adding, active, passive, removing, failed.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         * Deprecated: Not supported after v0.3.0 api version. Use state instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public stateDeprecated: string;

                        /**
                         * The current state of the namespace region.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=state_deprecated
                         */
                        public state: temporal.api.cloud.namespace.v1.NamespaceRegionStatus.State;

                        /** The id of the async operation that is making changes to where the namespace is available, if any. */
                        public asyncOperationId: string;

                        /**
                         * Creates a new NamespaceRegionStatus instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns NamespaceRegionStatus instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.INamespaceRegionStatus): temporal.api.cloud.namespace.v1.NamespaceRegionStatus;

                        /**
                         * Encodes the specified NamespaceRegionStatus message. Does not implicitly {@link temporal.api.cloud.namespace.v1.NamespaceRegionStatus.verify|verify} messages.
                         * @param message NamespaceRegionStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.INamespaceRegionStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NamespaceRegionStatus message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.NamespaceRegionStatus.verify|verify} messages.
                         * @param message NamespaceRegionStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.INamespaceRegionStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NamespaceRegionStatus message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns NamespaceRegionStatus
                         * @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): temporal.api.cloud.namespace.v1.NamespaceRegionStatus;

                        /**
                         * Decodes a NamespaceRegionStatus message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns NamespaceRegionStatus
                         * @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)): temporal.api.cloud.namespace.v1.NamespaceRegionStatus;

                        /**
                         * Creates a NamespaceRegionStatus message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns NamespaceRegionStatus
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.NamespaceRegionStatus;

                        /**
                         * Creates a plain object from a NamespaceRegionStatus message. Also converts values to other types if specified.
                         * @param message NamespaceRegionStatus
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.NamespaceRegionStatus, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NamespaceRegionStatus to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for NamespaceRegionStatus
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace NamespaceRegionStatus {

                        /** State enum. */
                        enum State {
                            STATE_UNSPECIFIED = 0,
                            STATE_ADDING = 1,
                            STATE_ACTIVE = 2,
                            STATE_PASSIVE = 3,
                            STATE_REMOVING = 4,
                            STATE_FAILED = 5
                        }
                    }

                    /** Properties of an ExportSinkSpec. */
                    interface IExportSinkSpec {

                        /** The unique name of the export sink, it can't be changed once set. */
                        name?: (string|null);

                        /** A flag indicating whether the export sink is enabled or not. */
                        enabled?: (boolean|null);

                        /** The S3 configuration details when destination_type is S3. */
                        s3?: (temporal.api.cloud.sink.v1.IS3Spec|null);

                        /** The GCS configuration details when destination_type is GCS. */
                        gcs?: (temporal.api.cloud.sink.v1.IGCSSpec|null);
                    }

                    /** Represents an ExportSinkSpec. */
                    class ExportSinkSpec implements IExportSinkSpec {

                        /**
                         * Constructs a new ExportSinkSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.IExportSinkSpec);

                        /** The unique name of the export sink, it can't be changed once set. */
                        public name: string;

                        /** A flag indicating whether the export sink is enabled or not. */
                        public enabled: boolean;

                        /** The S3 configuration details when destination_type is S3. */
                        public s3?: (temporal.api.cloud.sink.v1.IS3Spec|null);

                        /** The GCS configuration details when destination_type is GCS. */
                        public gcs?: (temporal.api.cloud.sink.v1.IGCSSpec|null);

                        /**
                         * Creates a new ExportSinkSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExportSinkSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.IExportSinkSpec): temporal.api.cloud.namespace.v1.ExportSinkSpec;

                        /**
                         * Encodes the specified ExportSinkSpec message. Does not implicitly {@link temporal.api.cloud.namespace.v1.ExportSinkSpec.verify|verify} messages.
                         * @param message ExportSinkSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.IExportSinkSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExportSinkSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.ExportSinkSpec.verify|verify} messages.
                         * @param message ExportSinkSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.IExportSinkSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExportSinkSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExportSinkSpec
                         * @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): temporal.api.cloud.namespace.v1.ExportSinkSpec;

                        /**
                         * Decodes an ExportSinkSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExportSinkSpec
                         * @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)): temporal.api.cloud.namespace.v1.ExportSinkSpec;

                        /**
                         * Creates an ExportSinkSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExportSinkSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.ExportSinkSpec;

                        /**
                         * Creates a plain object from an ExportSinkSpec message. Also converts values to other types if specified.
                         * @param message ExportSinkSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.ExportSinkSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExportSinkSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExportSinkSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an ExportSink. */
                    interface IExportSink {

                        /** The unique name of the export sink. */
                        name?: (string|null);

                        /** The version of the export sink resource. */
                        resourceVersion?: (string|null);

                        /** The current state of the export sink. */
                        state?: (temporal.api.cloud.resource.v1.ResourceState|null);

                        /** The specification details of the export sink. */
                        spec?: (temporal.api.cloud.namespace.v1.IExportSinkSpec|null);

                        /** The health status of the export sink. */
                        health?: (temporal.api.cloud.namespace.v1.ExportSink.Health|null);

                        /** An error message describing any issues with the export sink, if applicable. */
                        errorMessage?: (string|null);

                        /** The timestamp of the latest successful data export. */
                        latestDataExportTime?: (google.protobuf.ITimestamp|null);

                        /** The timestamp of the last health check performed on the export sink. */
                        lastHealthCheckTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents an ExportSink. */
                    class ExportSink implements IExportSink {

                        /**
                         * Constructs a new ExportSink.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.namespace.v1.IExportSink);

                        /** The unique name of the export sink. */
                        public name: string;

                        /** The version of the export sink resource. */
                        public resourceVersion: string;

                        /** The current state of the export sink. */
                        public state: temporal.api.cloud.resource.v1.ResourceState;

                        /** The specification details of the export sink. */
                        public spec?: (temporal.api.cloud.namespace.v1.IExportSinkSpec|null);

                        /** The health status of the export sink. */
                        public health: temporal.api.cloud.namespace.v1.ExportSink.Health;

                        /** An error message describing any issues with the export sink, if applicable. */
                        public errorMessage: string;

                        /** The timestamp of the latest successful data export. */
                        public latestDataExportTime?: (google.protobuf.ITimestamp|null);

                        /** The timestamp of the last health check performed on the export sink. */
                        public lastHealthCheckTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new ExportSink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExportSink instance
                         */
                        public static create(properties?: temporal.api.cloud.namespace.v1.IExportSink): temporal.api.cloud.namespace.v1.ExportSink;

                        /**
                         * Encodes the specified ExportSink message. Does not implicitly {@link temporal.api.cloud.namespace.v1.ExportSink.verify|verify} messages.
                         * @param message ExportSink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.namespace.v1.IExportSink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExportSink message, length delimited. Does not implicitly {@link temporal.api.cloud.namespace.v1.ExportSink.verify|verify} messages.
                         * @param message ExportSink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.namespace.v1.IExportSink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExportSink message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExportSink
                         * @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): temporal.api.cloud.namespace.v1.ExportSink;

                        /**
                         * Decodes an ExportSink message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExportSink
                         * @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)): temporal.api.cloud.namespace.v1.ExportSink;

                        /**
                         * Creates an ExportSink message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExportSink
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.namespace.v1.ExportSink;

                        /**
                         * Creates a plain object from an ExportSink message. Also converts values to other types if specified.
                         * @param message ExportSink
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.namespace.v1.ExportSink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExportSink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExportSink
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ExportSink {

                        /** Health enum. */
                        enum Health {
                            HEALTH_UNSPECIFIED = 0,
                            HEALTH_OK = 1,
                            HEALTH_ERROR_INTERNAL = 2,
                            HEALTH_ERROR_USER_CONFIGURATION = 3
                        }
                    }
                }
            }

            /** Namespace sink. */
            namespace sink {

                /** Namespace v1. */
                namespace v1 {

                    /** Properties of a S3Spec. */
                    interface IS3Spec {

                        /** The IAM role that Temporal Cloud assumes for writing records to the customer's S3 bucket. */
                        roleName?: (string|null);

                        /** The name of the destination S3 bucket where Temporal will send data. */
                        bucketName?: (string|null);

                        /** The region where the S3 bucket is located. */
                        region?: (string|null);

                        /** The AWS Key Management Service (KMS) ARN used for encryption. */
                        kmsArn?: (string|null);

                        /** The AWS account ID associated with the S3 bucket and the assumed role. */
                        awsAccountId?: (string|null);
                    }

                    /** Represents a S3Spec. */
                    class S3Spec implements IS3Spec {

                        /**
                         * Constructs a new S3Spec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.sink.v1.IS3Spec);

                        /** The IAM role that Temporal Cloud assumes for writing records to the customer's S3 bucket. */
                        public roleName: string;

                        /** The name of the destination S3 bucket where Temporal will send data. */
                        public bucketName: string;

                        /** The region where the S3 bucket is located. */
                        public region: string;

                        /** The AWS Key Management Service (KMS) ARN used for encryption. */
                        public kmsArn: string;

                        /** The AWS account ID associated with the S3 bucket and the assumed role. */
                        public awsAccountId: string;

                        /**
                         * Creates a new S3Spec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns S3Spec instance
                         */
                        public static create(properties?: temporal.api.cloud.sink.v1.IS3Spec): temporal.api.cloud.sink.v1.S3Spec;

                        /**
                         * Encodes the specified S3Spec message. Does not implicitly {@link temporal.api.cloud.sink.v1.S3Spec.verify|verify} messages.
                         * @param message S3Spec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.sink.v1.IS3Spec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified S3Spec message, length delimited. Does not implicitly {@link temporal.api.cloud.sink.v1.S3Spec.verify|verify} messages.
                         * @param message S3Spec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.sink.v1.IS3Spec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a S3Spec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns S3Spec
                         * @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): temporal.api.cloud.sink.v1.S3Spec;

                        /**
                         * Decodes a S3Spec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns S3Spec
                         * @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)): temporal.api.cloud.sink.v1.S3Spec;

                        /**
                         * Creates a S3Spec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns S3Spec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.sink.v1.S3Spec;

                        /**
                         * Creates a plain object from a S3Spec message. Also converts values to other types if specified.
                         * @param message S3Spec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.sink.v1.S3Spec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this S3Spec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for S3Spec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GCSSpec. */
                    interface IGCSSpec {

                        /** The customer service account ID that Temporal Cloud impersonates for writing records to the customer's GCS bucket. */
                        saId?: (string|null);

                        /** The name of the destination GCS bucket where Temporal will send data. */
                        bucketName?: (string|null);

                        /** The GCP project ID associated with the GCS bucket and service account. */
                        gcpProjectId?: (string|null);

                        /** The region of the gcs bucket */
                        region?: (string|null);
                    }

                    /** Represents a GCSSpec. */
                    class GCSSpec implements IGCSSpec {

                        /**
                         * Constructs a new GCSSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.sink.v1.IGCSSpec);

                        /** The customer service account ID that Temporal Cloud impersonates for writing records to the customer's GCS bucket. */
                        public saId: string;

                        /** The name of the destination GCS bucket where Temporal will send data. */
                        public bucketName: string;

                        /** The GCP project ID associated with the GCS bucket and service account. */
                        public gcpProjectId: string;

                        /** The region of the gcs bucket */
                        public region: string;

                        /**
                         * Creates a new GCSSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GCSSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.sink.v1.IGCSSpec): temporal.api.cloud.sink.v1.GCSSpec;

                        /**
                         * Encodes the specified GCSSpec message. Does not implicitly {@link temporal.api.cloud.sink.v1.GCSSpec.verify|verify} messages.
                         * @param message GCSSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.sink.v1.IGCSSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GCSSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.sink.v1.GCSSpec.verify|verify} messages.
                         * @param message GCSSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.sink.v1.IGCSSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GCSSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GCSSpec
                         * @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): temporal.api.cloud.sink.v1.GCSSpec;

                        /**
                         * Decodes a GCSSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GCSSpec
                         * @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)): temporal.api.cloud.sink.v1.GCSSpec;

                        /**
                         * Creates a GCSSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GCSSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.sink.v1.GCSSpec;

                        /**
                         * Creates a plain object from a GCSSpec message. Also converts values to other types if specified.
                         * @param message GCSSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.sink.v1.GCSSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GCSSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GCSSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a KinesisSpec. */
                    interface IKinesisSpec {

                        /** The role Temporal Cloud assumes when writing records to Kinesis */
                        roleName?: (string|null);

                        /** Destination Kinesis endpoint arn for temporal to send data to. */
                        destinationUri?: (string|null);

                        /** The sink's region. */
                        region?: (string|null);
                    }

                    /** Represents a KinesisSpec. */
                    class KinesisSpec implements IKinesisSpec {

                        /**
                         * Constructs a new KinesisSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.sink.v1.IKinesisSpec);

                        /** The role Temporal Cloud assumes when writing records to Kinesis */
                        public roleName: string;

                        /** Destination Kinesis endpoint arn for temporal to send data to. */
                        public destinationUri: string;

                        /** The sink's region. */
                        public region: string;

                        /**
                         * Creates a new KinesisSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KinesisSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.sink.v1.IKinesisSpec): temporal.api.cloud.sink.v1.KinesisSpec;

                        /**
                         * Encodes the specified KinesisSpec message. Does not implicitly {@link temporal.api.cloud.sink.v1.KinesisSpec.verify|verify} messages.
                         * @param message KinesisSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.sink.v1.IKinesisSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KinesisSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.sink.v1.KinesisSpec.verify|verify} messages.
                         * @param message KinesisSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.sink.v1.IKinesisSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KinesisSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns KinesisSpec
                         * @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): temporal.api.cloud.sink.v1.KinesisSpec;

                        /**
                         * Decodes a KinesisSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KinesisSpec
                         * @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)): temporal.api.cloud.sink.v1.KinesisSpec;

                        /**
                         * Creates a KinesisSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns KinesisSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.sink.v1.KinesisSpec;

                        /**
                         * Creates a plain object from a KinesisSpec message. Also converts values to other types if specified.
                         * @param message KinesisSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.sink.v1.KinesisSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KinesisSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for KinesisSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PubSubSpec. */
                    interface IPubSubSpec {

                        /** The customer service account id that Temporal Cloud impersonates for writing records to customer's pubsub topic */
                        serviceAccountId?: (string|null);

                        /** Destination pubsub topic name for us */
                        topicName?: (string|null);

                        /** The gcp project id of pubsub topic and service account */
                        gcpProjectId?: (string|null);
                    }

                    /** Represents a PubSubSpec. */
                    class PubSubSpec implements IPubSubSpec {

                        /**
                         * Constructs a new PubSubSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.sink.v1.IPubSubSpec);

                        /** The customer service account id that Temporal Cloud impersonates for writing records to customer's pubsub topic */
                        public serviceAccountId: string;

                        /** Destination pubsub topic name for us */
                        public topicName: string;

                        /** The gcp project id of pubsub topic and service account */
                        public gcpProjectId: string;

                        /**
                         * Creates a new PubSubSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PubSubSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.sink.v1.IPubSubSpec): temporal.api.cloud.sink.v1.PubSubSpec;

                        /**
                         * Encodes the specified PubSubSpec message. Does not implicitly {@link temporal.api.cloud.sink.v1.PubSubSpec.verify|verify} messages.
                         * @param message PubSubSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.sink.v1.IPubSubSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PubSubSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.sink.v1.PubSubSpec.verify|verify} messages.
                         * @param message PubSubSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.sink.v1.IPubSubSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PubSubSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PubSubSpec
                         * @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): temporal.api.cloud.sink.v1.PubSubSpec;

                        /**
                         * Decodes a PubSubSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PubSubSpec
                         * @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)): temporal.api.cloud.sink.v1.PubSubSpec;

                        /**
                         * Creates a PubSubSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PubSubSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.sink.v1.PubSubSpec;

                        /**
                         * Creates a plain object from a PubSubSpec message. Also converts values to other types if specified.
                         * @param message PubSubSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.sink.v1.PubSubSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PubSubSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PubSubSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }
            }

            /** Namespace connectivityrule. */
            namespace connectivityrule {

                /** Namespace v1. */
                namespace v1 {

                    /** Properties of a ConnectivityRule. */
                    interface IConnectivityRule {

                        /** The id of the private connectivity rule. */
                        id?: (string|null);

                        /** The connectivity rule specification. */
                        spec?: (temporal.api.cloud.connectivityrule.v1.IConnectivityRuleSpec|null);

                        /**
                         * The current version of the connectivity rule specification.
                         * The next update operation will have to include this version.
                         */
                        resourceVersion?: (string|null);

                        /** ConnectivityRule state */
                        state?: (temporal.api.cloud.resource.v1.ResourceState|null);

                        /** The id of the async operation that is creating/updating/deleting the connectivity rule, if any. */
                        asyncOperationId?: (string|null);

                        /** The date and time when the connectivity rule was created. */
                        createdTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a ConnectivityRule. */
                    class ConnectivityRule implements IConnectivityRule {

                        /**
                         * Constructs a new ConnectivityRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.connectivityrule.v1.IConnectivityRule);

                        /** The id of the private connectivity rule. */
                        public id: string;

                        /** The connectivity rule specification. */
                        public spec?: (temporal.api.cloud.connectivityrule.v1.IConnectivityRuleSpec|null);

                        /**
                         * The current version of the connectivity rule specification.
                         * The next update operation will have to include this version.
                         */
                        public resourceVersion: string;

                        /** ConnectivityRule state. */
                        public state: temporal.api.cloud.resource.v1.ResourceState;

                        /** The id of the async operation that is creating/updating/deleting the connectivity rule, if any. */
                        public asyncOperationId: string;

                        /** The date and time when the connectivity rule was created. */
                        public createdTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new ConnectivityRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConnectivityRule instance
                         */
                        public static create(properties?: temporal.api.cloud.connectivityrule.v1.IConnectivityRule): temporal.api.cloud.connectivityrule.v1.ConnectivityRule;

                        /**
                         * Encodes the specified ConnectivityRule message. Does not implicitly {@link temporal.api.cloud.connectivityrule.v1.ConnectivityRule.verify|verify} messages.
                         * @param message ConnectivityRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.connectivityrule.v1.IConnectivityRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConnectivityRule message, length delimited. Does not implicitly {@link temporal.api.cloud.connectivityrule.v1.ConnectivityRule.verify|verify} messages.
                         * @param message ConnectivityRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.connectivityrule.v1.IConnectivityRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConnectivityRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConnectivityRule
                         * @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): temporal.api.cloud.connectivityrule.v1.ConnectivityRule;

                        /**
                         * Decodes a ConnectivityRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConnectivityRule
                         * @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)): temporal.api.cloud.connectivityrule.v1.ConnectivityRule;

                        /**
                         * Creates a ConnectivityRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConnectivityRule
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.connectivityrule.v1.ConnectivityRule;

                        /**
                         * Creates a plain object from a ConnectivityRule message. Also converts values to other types if specified.
                         * @param message ConnectivityRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.connectivityrule.v1.ConnectivityRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConnectivityRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConnectivityRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConnectivityRuleSpec. */
                    interface IConnectivityRuleSpec {

                        /** This allows access via public internet. */
                        publicRule?: (temporal.api.cloud.connectivityrule.v1.IPublicConnectivityRule|null);

                        /** This allows access via specific private vpc. */
                        privateRule?: (temporal.api.cloud.connectivityrule.v1.IPrivateConnectivityRule|null);
                    }

                    /** The connectivity rule specification passed in on create/update operations. */
                    class ConnectivityRuleSpec implements IConnectivityRuleSpec {

                        /**
                         * Constructs a new ConnectivityRuleSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.connectivityrule.v1.IConnectivityRuleSpec);

                        /** This allows access via public internet. */
                        public publicRule?: (temporal.api.cloud.connectivityrule.v1.IPublicConnectivityRule|null);

                        /** This allows access via specific private vpc. */
                        public privateRule?: (temporal.api.cloud.connectivityrule.v1.IPrivateConnectivityRule|null);

                        /** ConnectivityRuleSpec connectionType. */
                        public connectionType?: ("publicRule"|"privateRule");

                        /**
                         * Creates a new ConnectivityRuleSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConnectivityRuleSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.connectivityrule.v1.IConnectivityRuleSpec): temporal.api.cloud.connectivityrule.v1.ConnectivityRuleSpec;

                        /**
                         * Encodes the specified ConnectivityRuleSpec message. Does not implicitly {@link temporal.api.cloud.connectivityrule.v1.ConnectivityRuleSpec.verify|verify} messages.
                         * @param message ConnectivityRuleSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.connectivityrule.v1.IConnectivityRuleSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConnectivityRuleSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.connectivityrule.v1.ConnectivityRuleSpec.verify|verify} messages.
                         * @param message ConnectivityRuleSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.connectivityrule.v1.IConnectivityRuleSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConnectivityRuleSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConnectivityRuleSpec
                         * @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): temporal.api.cloud.connectivityrule.v1.ConnectivityRuleSpec;

                        /**
                         * Decodes a ConnectivityRuleSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConnectivityRuleSpec
                         * @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)): temporal.api.cloud.connectivityrule.v1.ConnectivityRuleSpec;

                        /**
                         * Creates a ConnectivityRuleSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConnectivityRuleSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.connectivityrule.v1.ConnectivityRuleSpec;

                        /**
                         * Creates a plain object from a ConnectivityRuleSpec message. Also converts values to other types if specified.
                         * @param message ConnectivityRuleSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.connectivityrule.v1.ConnectivityRuleSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConnectivityRuleSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConnectivityRuleSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PublicConnectivityRule. */
                    interface IPublicConnectivityRule {
                    }

                    /** A public connectivity rule allows access to the namespace via the public internet. */
                    class PublicConnectivityRule implements IPublicConnectivityRule {

                        /**
                         * Constructs a new PublicConnectivityRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.connectivityrule.v1.IPublicConnectivityRule);

                        /**
                         * Creates a new PublicConnectivityRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PublicConnectivityRule instance
                         */
                        public static create(properties?: temporal.api.cloud.connectivityrule.v1.IPublicConnectivityRule): temporal.api.cloud.connectivityrule.v1.PublicConnectivityRule;

                        /**
                         * Encodes the specified PublicConnectivityRule message. Does not implicitly {@link temporal.api.cloud.connectivityrule.v1.PublicConnectivityRule.verify|verify} messages.
                         * @param message PublicConnectivityRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.connectivityrule.v1.IPublicConnectivityRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PublicConnectivityRule message, length delimited. Does not implicitly {@link temporal.api.cloud.connectivityrule.v1.PublicConnectivityRule.verify|verify} messages.
                         * @param message PublicConnectivityRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.connectivityrule.v1.IPublicConnectivityRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PublicConnectivityRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PublicConnectivityRule
                         * @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): temporal.api.cloud.connectivityrule.v1.PublicConnectivityRule;

                        /**
                         * Decodes a PublicConnectivityRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PublicConnectivityRule
                         * @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)): temporal.api.cloud.connectivityrule.v1.PublicConnectivityRule;

                        /**
                         * Creates a PublicConnectivityRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PublicConnectivityRule
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.connectivityrule.v1.PublicConnectivityRule;

                        /**
                         * Creates a plain object from a PublicConnectivityRule message. Also converts values to other types if specified.
                         * @param message PublicConnectivityRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.connectivityrule.v1.PublicConnectivityRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PublicConnectivityRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PublicConnectivityRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PrivateConnectivityRule. */
                    interface IPrivateConnectivityRule {

                        /** Connection id provided to enforce the private connectivity. This is required both by AWS and GCP. */
                        connectionId?: (string|null);

                        /**
                         * For GCP private connectivity service, GCP needs both GCP project id and the Private Service Connect Connection IDs
                         * AWS only needs the connection_id
                         */
                        gcpProjectId?: (string|null);

                        /**
                         * The region of the connectivity rule. This should align with the namespace.
                         * Example: "aws-us-west-2"
                         */
                        region?: (string|null);
                    }

                    /** A private connectivity rule allows connections from a specific private vpc only. */
                    class PrivateConnectivityRule implements IPrivateConnectivityRule {

                        /**
                         * Constructs a new PrivateConnectivityRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.connectivityrule.v1.IPrivateConnectivityRule);

                        /** Connection id provided to enforce the private connectivity. This is required both by AWS and GCP. */
                        public connectionId: string;

                        /**
                         * For GCP private connectivity service, GCP needs both GCP project id and the Private Service Connect Connection IDs
                         * AWS only needs the connection_id
                         */
                        public gcpProjectId: string;

                        /**
                         * The region of the connectivity rule. This should align with the namespace.
                         * Example: "aws-us-west-2"
                         */
                        public region: string;

                        /**
                         * Creates a new PrivateConnectivityRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PrivateConnectivityRule instance
                         */
                        public static create(properties?: temporal.api.cloud.connectivityrule.v1.IPrivateConnectivityRule): temporal.api.cloud.connectivityrule.v1.PrivateConnectivityRule;

                        /**
                         * Encodes the specified PrivateConnectivityRule message. Does not implicitly {@link temporal.api.cloud.connectivityrule.v1.PrivateConnectivityRule.verify|verify} messages.
                         * @param message PrivateConnectivityRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.connectivityrule.v1.IPrivateConnectivityRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PrivateConnectivityRule message, length delimited. Does not implicitly {@link temporal.api.cloud.connectivityrule.v1.PrivateConnectivityRule.verify|verify} messages.
                         * @param message PrivateConnectivityRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.connectivityrule.v1.IPrivateConnectivityRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PrivateConnectivityRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PrivateConnectivityRule
                         * @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): temporal.api.cloud.connectivityrule.v1.PrivateConnectivityRule;

                        /**
                         * Decodes a PrivateConnectivityRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PrivateConnectivityRule
                         * @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)): temporal.api.cloud.connectivityrule.v1.PrivateConnectivityRule;

                        /**
                         * Creates a PrivateConnectivityRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PrivateConnectivityRule
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.connectivityrule.v1.PrivateConnectivityRule;

                        /**
                         * Creates a plain object from a PrivateConnectivityRule message. Also converts values to other types if specified.
                         * @param message PrivateConnectivityRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.connectivityrule.v1.PrivateConnectivityRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PrivateConnectivityRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PrivateConnectivityRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }
            }

            /** Namespace nexus. */
            namespace nexus {

                /** Namespace v1. */
                namespace v1 {

                    /** Properties of an EndpointSpec. */
                    interface IEndpointSpec {

                        /**
                         * The name of the endpoint. Must be unique within an account.
                         * The name must match `^[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9]$`.
                         * This field is mutable.
                         */
                        name?: (string|null);

                        /** Indicates where the endpoint should forward received nexus requests to. */
                        targetSpec?: (temporal.api.cloud.nexus.v1.IEndpointTargetSpec|null);

                        /**
                         * The set of policies (e.g. authorization) for the endpoint. Each request's caller
                         * must match with at least one of the specs to be accepted by the endpoint.
                         * This field is mutable.
                         */
                        policySpecs?: (temporal.api.cloud.nexus.v1.IEndpointPolicySpec[]|null);

                        /**
                         * Deprecated: Not supported after v0.4.0 api version. Use description instead.
                         * temporal:versioning:max_version=v0.4.0
                         */
                        descriptionDeprecated?: (string|null);

                        /**
                         * The markdown description of the endpoint - optional.
                         * temporal:versioning:min_version=v0.4.0
                         */
                        description?: (temporal.api.common.v1.IPayload|null);
                    }

                    /** Represents an EndpointSpec. */
                    class EndpointSpec implements IEndpointSpec {

                        /**
                         * Constructs a new EndpointSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.nexus.v1.IEndpointSpec);

                        /**
                         * The name of the endpoint. Must be unique within an account.
                         * The name must match `^[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9]$`.
                         * This field is mutable.
                         */
                        public name: string;

                        /** Indicates where the endpoint should forward received nexus requests to. */
                        public targetSpec?: (temporal.api.cloud.nexus.v1.IEndpointTargetSpec|null);

                        /**
                         * The set of policies (e.g. authorization) for the endpoint. Each request's caller
                         * must match with at least one of the specs to be accepted by the endpoint.
                         * This field is mutable.
                         */
                        public policySpecs: temporal.api.cloud.nexus.v1.IEndpointPolicySpec[];

                        /**
                         * Deprecated: Not supported after v0.4.0 api version. Use description instead.
                         * temporal:versioning:max_version=v0.4.0
                         */
                        public descriptionDeprecated: string;

                        /**
                         * The markdown description of the endpoint - optional.
                         * temporal:versioning:min_version=v0.4.0
                         */
                        public description?: (temporal.api.common.v1.IPayload|null);

                        /**
                         * Creates a new EndpointSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EndpointSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.nexus.v1.IEndpointSpec): temporal.api.cloud.nexus.v1.EndpointSpec;

                        /**
                         * Encodes the specified EndpointSpec message. Does not implicitly {@link temporal.api.cloud.nexus.v1.EndpointSpec.verify|verify} messages.
                         * @param message EndpointSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.nexus.v1.IEndpointSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EndpointSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.nexus.v1.EndpointSpec.verify|verify} messages.
                         * @param message EndpointSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.nexus.v1.IEndpointSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EndpointSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EndpointSpec
                         * @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): temporal.api.cloud.nexus.v1.EndpointSpec;

                        /**
                         * Decodes an EndpointSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EndpointSpec
                         * @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)): temporal.api.cloud.nexus.v1.EndpointSpec;

                        /**
                         * Creates an EndpointSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EndpointSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.nexus.v1.EndpointSpec;

                        /**
                         * Creates a plain object from an EndpointSpec message. Also converts values to other types if specified.
                         * @param message EndpointSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.nexus.v1.EndpointSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EndpointSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EndpointSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EndpointTargetSpec. */
                    interface IEndpointTargetSpec {

                        /** A target spec for routing nexus requests to a specific cloud namespace worker. */
                        workerTargetSpec?: (temporal.api.cloud.nexus.v1.IWorkerTargetSpec|null);
                    }

                    /** Represents an EndpointTargetSpec. */
                    class EndpointTargetSpec implements IEndpointTargetSpec {

                        /**
                         * Constructs a new EndpointTargetSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.nexus.v1.IEndpointTargetSpec);

                        /** A target spec for routing nexus requests to a specific cloud namespace worker. */
                        public workerTargetSpec?: (temporal.api.cloud.nexus.v1.IWorkerTargetSpec|null);

                        /** EndpointTargetSpec variant. */
                        public variant?: "workerTargetSpec";

                        /**
                         * Creates a new EndpointTargetSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EndpointTargetSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.nexus.v1.IEndpointTargetSpec): temporal.api.cloud.nexus.v1.EndpointTargetSpec;

                        /**
                         * Encodes the specified EndpointTargetSpec message. Does not implicitly {@link temporal.api.cloud.nexus.v1.EndpointTargetSpec.verify|verify} messages.
                         * @param message EndpointTargetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.nexus.v1.IEndpointTargetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EndpointTargetSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.nexus.v1.EndpointTargetSpec.verify|verify} messages.
                         * @param message EndpointTargetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.nexus.v1.IEndpointTargetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EndpointTargetSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EndpointTargetSpec
                         * @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): temporal.api.cloud.nexus.v1.EndpointTargetSpec;

                        /**
                         * Decodes an EndpointTargetSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EndpointTargetSpec
                         * @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)): temporal.api.cloud.nexus.v1.EndpointTargetSpec;

                        /**
                         * Creates an EndpointTargetSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EndpointTargetSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.nexus.v1.EndpointTargetSpec;

                        /**
                         * Creates a plain object from an EndpointTargetSpec message. Also converts values to other types if specified.
                         * @param message EndpointTargetSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.nexus.v1.EndpointTargetSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EndpointTargetSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EndpointTargetSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a WorkerTargetSpec. */
                    interface IWorkerTargetSpec {

                        /** The target cloud namespace to route requests to. Namespace must be in same account as the endpoint. This field is mutable. */
                        namespaceId?: (string|null);

                        /** The task queue on the cloud namespace to route requests to. This field is mutable. */
                        taskQueue?: (string|null);
                    }

                    /** Represents a WorkerTargetSpec. */
                    class WorkerTargetSpec implements IWorkerTargetSpec {

                        /**
                         * Constructs a new WorkerTargetSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.nexus.v1.IWorkerTargetSpec);

                        /** The target cloud namespace to route requests to. Namespace must be in same account as the endpoint. This field is mutable. */
                        public namespaceId: string;

                        /** The task queue on the cloud namespace to route requests to. This field is mutable. */
                        public taskQueue: string;

                        /**
                         * Creates a new WorkerTargetSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WorkerTargetSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.nexus.v1.IWorkerTargetSpec): temporal.api.cloud.nexus.v1.WorkerTargetSpec;

                        /**
                         * Encodes the specified WorkerTargetSpec message. Does not implicitly {@link temporal.api.cloud.nexus.v1.WorkerTargetSpec.verify|verify} messages.
                         * @param message WorkerTargetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.nexus.v1.IWorkerTargetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WorkerTargetSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.nexus.v1.WorkerTargetSpec.verify|verify} messages.
                         * @param message WorkerTargetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.nexus.v1.IWorkerTargetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WorkerTargetSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns WorkerTargetSpec
                         * @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): temporal.api.cloud.nexus.v1.WorkerTargetSpec;

                        /**
                         * Decodes a WorkerTargetSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns WorkerTargetSpec
                         * @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)): temporal.api.cloud.nexus.v1.WorkerTargetSpec;

                        /**
                         * Creates a WorkerTargetSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns WorkerTargetSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.nexus.v1.WorkerTargetSpec;

                        /**
                         * Creates a plain object from a WorkerTargetSpec message. Also converts values to other types if specified.
                         * @param message WorkerTargetSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.nexus.v1.WorkerTargetSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WorkerTargetSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for WorkerTargetSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an EndpointPolicySpec. */
                    interface IEndpointPolicySpec {

                        /** A policy spec that allows one caller namespace to access the endpoint. */
                        allowedCloudNamespacePolicySpec?: (temporal.api.cloud.nexus.v1.IAllowedCloudNamespacePolicySpec|null);
                    }

                    /** Represents an EndpointPolicySpec. */
                    class EndpointPolicySpec implements IEndpointPolicySpec {

                        /**
                         * Constructs a new EndpointPolicySpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.nexus.v1.IEndpointPolicySpec);

                        /** A policy spec that allows one caller namespace to access the endpoint. */
                        public allowedCloudNamespacePolicySpec?: (temporal.api.cloud.nexus.v1.IAllowedCloudNamespacePolicySpec|null);

                        /** EndpointPolicySpec variant. */
                        public variant?: "allowedCloudNamespacePolicySpec";

                        /**
                         * Creates a new EndpointPolicySpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EndpointPolicySpec instance
                         */
                        public static create(properties?: temporal.api.cloud.nexus.v1.IEndpointPolicySpec): temporal.api.cloud.nexus.v1.EndpointPolicySpec;

                        /**
                         * Encodes the specified EndpointPolicySpec message. Does not implicitly {@link temporal.api.cloud.nexus.v1.EndpointPolicySpec.verify|verify} messages.
                         * @param message EndpointPolicySpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.nexus.v1.IEndpointPolicySpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EndpointPolicySpec message, length delimited. Does not implicitly {@link temporal.api.cloud.nexus.v1.EndpointPolicySpec.verify|verify} messages.
                         * @param message EndpointPolicySpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.nexus.v1.IEndpointPolicySpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EndpointPolicySpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EndpointPolicySpec
                         * @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): temporal.api.cloud.nexus.v1.EndpointPolicySpec;

                        /**
                         * Decodes an EndpointPolicySpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EndpointPolicySpec
                         * @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)): temporal.api.cloud.nexus.v1.EndpointPolicySpec;

                        /**
                         * Creates an EndpointPolicySpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns EndpointPolicySpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.nexus.v1.EndpointPolicySpec;

                        /**
                         * Creates a plain object from an EndpointPolicySpec message. Also converts values to other types if specified.
                         * @param message EndpointPolicySpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.nexus.v1.EndpointPolicySpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EndpointPolicySpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for EndpointPolicySpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AllowedCloudNamespacePolicySpec. */
                    interface IAllowedCloudNamespacePolicySpec {

                        /** The namespace that is allowed to call into this endpoint. Calling namespace must be in same account as the endpoint. */
                        namespaceId?: (string|null);
                    }

                    /** Represents an AllowedCloudNamespacePolicySpec. */
                    class AllowedCloudNamespacePolicySpec implements IAllowedCloudNamespacePolicySpec {

                        /**
                         * Constructs a new AllowedCloudNamespacePolicySpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.nexus.v1.IAllowedCloudNamespacePolicySpec);

                        /** The namespace that is allowed to call into this endpoint. Calling namespace must be in same account as the endpoint. */
                        public namespaceId: string;

                        /**
                         * Creates a new AllowedCloudNamespacePolicySpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AllowedCloudNamespacePolicySpec instance
                         */
                        public static create(properties?: temporal.api.cloud.nexus.v1.IAllowedCloudNamespacePolicySpec): temporal.api.cloud.nexus.v1.AllowedCloudNamespacePolicySpec;

                        /**
                         * Encodes the specified AllowedCloudNamespacePolicySpec message. Does not implicitly {@link temporal.api.cloud.nexus.v1.AllowedCloudNamespacePolicySpec.verify|verify} messages.
                         * @param message AllowedCloudNamespacePolicySpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.nexus.v1.IAllowedCloudNamespacePolicySpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AllowedCloudNamespacePolicySpec message, length delimited. Does not implicitly {@link temporal.api.cloud.nexus.v1.AllowedCloudNamespacePolicySpec.verify|verify} messages.
                         * @param message AllowedCloudNamespacePolicySpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.nexus.v1.IAllowedCloudNamespacePolicySpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AllowedCloudNamespacePolicySpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AllowedCloudNamespacePolicySpec
                         * @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): temporal.api.cloud.nexus.v1.AllowedCloudNamespacePolicySpec;

                        /**
                         * Decodes an AllowedCloudNamespacePolicySpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AllowedCloudNamespacePolicySpec
                         * @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)): temporal.api.cloud.nexus.v1.AllowedCloudNamespacePolicySpec;

                        /**
                         * Creates an AllowedCloudNamespacePolicySpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AllowedCloudNamespacePolicySpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.nexus.v1.AllowedCloudNamespacePolicySpec;

                        /**
                         * Creates a plain object from an AllowedCloudNamespacePolicySpec message. Also converts values to other types if specified.
                         * @param message AllowedCloudNamespacePolicySpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.nexus.v1.AllowedCloudNamespacePolicySpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AllowedCloudNamespacePolicySpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AllowedCloudNamespacePolicySpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an Endpoint. */
                    interface IEndpoint {

                        /** The id of the endpoint. This is generated by the server and is immutable. */
                        id?: (string|null);

                        /**
                         * The current version of the endpoint specification.
                         * The next update operation must include this version.
                         */
                        resourceVersion?: (string|null);

                        /** The endpoint specification. */
                        spec?: (temporal.api.cloud.nexus.v1.IEndpointSpec|null);

                        /**
                         * The current state of the endpoint.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         */
                        state?: (temporal.api.cloud.resource.v1.ResourceState|null);

                        /** The id of any ongoing async operation that is creating, updating, or deleting the endpoint, if any. */
                        asyncOperationId?: (string|null);

                        /** The date and time when the endpoint was created. */
                        createdTime?: (google.protobuf.ITimestamp|null);

                        /** The date and time when the endpoint was last modified. */
                        lastModifiedTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** An endpoint that receives and then routes Nexus requests */
                    class Endpoint implements IEndpoint {

                        /**
                         * Constructs a new Endpoint.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.nexus.v1.IEndpoint);

                        /** The id of the endpoint. This is generated by the server and is immutable. */
                        public id: string;

                        /**
                         * The current version of the endpoint specification.
                         * The next update operation must include this version.
                         */
                        public resourceVersion: string;

                        /** The endpoint specification. */
                        public spec?: (temporal.api.cloud.nexus.v1.IEndpointSpec|null);

                        /**
                         * The current state of the endpoint.
                         * For any failed state, reach out to Temporal Cloud support for remediation.
                         */
                        public state: temporal.api.cloud.resource.v1.ResourceState;

                        /** The id of any ongoing async operation that is creating, updating, or deleting the endpoint, if any. */
                        public asyncOperationId: string;

                        /** The date and time when the endpoint was created. */
                        public createdTime?: (google.protobuf.ITimestamp|null);

                        /** The date and time when the endpoint was last modified. */
                        public lastModifiedTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new Endpoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Endpoint instance
                         */
                        public static create(properties?: temporal.api.cloud.nexus.v1.IEndpoint): temporal.api.cloud.nexus.v1.Endpoint;

                        /**
                         * Encodes the specified Endpoint message. Does not implicitly {@link temporal.api.cloud.nexus.v1.Endpoint.verify|verify} messages.
                         * @param message Endpoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.nexus.v1.IEndpoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Endpoint message, length delimited. Does not implicitly {@link temporal.api.cloud.nexus.v1.Endpoint.verify|verify} messages.
                         * @param message Endpoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.nexus.v1.IEndpoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Endpoint message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Endpoint
                         * @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): temporal.api.cloud.nexus.v1.Endpoint;

                        /**
                         * Decodes an Endpoint message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Endpoint
                         * @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)): temporal.api.cloud.nexus.v1.Endpoint;

                        /**
                         * Creates an Endpoint message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Endpoint
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.nexus.v1.Endpoint;

                        /**
                         * Creates a plain object from an Endpoint message. Also converts values to other types if specified.
                         * @param message Endpoint
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.nexus.v1.Endpoint, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Endpoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Endpoint
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }
            }

            /** Namespace region. */
            namespace region {

                /** Namespace v1. */
                namespace v1 {

                    /** Properties of a Region. */
                    interface IRegion {

                        /** The id of the temporal cloud region. */
                        id?: (string|null);

                        /**
                         * The name of the cloud provider that's hosting the region.
                         * Currently only "aws" is supported.
                         * Deprecated: Not supported after v0.3.0 api version. Use cloud_provider instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        cloudProviderDeprecated?: (string|null);

                        /**
                         * The cloud provider that's hosting the region.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=cloud_provider_deprecated
                         */
                        cloudProvider?: (temporal.api.cloud.region.v1.Region.CloudProvider|null);

                        /** The region identifier as defined by the cloud provider. */
                        cloudProviderRegion?: (string|null);

                        /** The human readable location of the region. */
                        location?: (string|null);
                    }

                    /** Represents a Region. */
                    class Region implements IRegion {

                        /**
                         * Constructs a new Region.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.region.v1.IRegion);

                        /** The id of the temporal cloud region. */
                        public id: string;

                        /**
                         * The name of the cloud provider that's hosting the region.
                         * Currently only "aws" is supported.
                         * Deprecated: Not supported after v0.3.0 api version. Use cloud_provider instead.
                         * temporal:versioning:max_version=v0.3.0
                         */
                        public cloudProviderDeprecated: string;

                        /**
                         * The cloud provider that's hosting the region.
                         * temporal:versioning:min_version=v0.3.0
                         * temporal:enums:replaces=cloud_provider_deprecated
                         */
                        public cloudProvider: temporal.api.cloud.region.v1.Region.CloudProvider;

                        /** The region identifier as defined by the cloud provider. */
                        public cloudProviderRegion: string;

                        /** The human readable location of the region. */
                        public location: string;

                        /**
                         * Creates a new Region instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Region instance
                         */
                        public static create(properties?: temporal.api.cloud.region.v1.IRegion): temporal.api.cloud.region.v1.Region;

                        /**
                         * Encodes the specified Region message. Does not implicitly {@link temporal.api.cloud.region.v1.Region.verify|verify} messages.
                         * @param message Region message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.region.v1.IRegion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Region message, length delimited. Does not implicitly {@link temporal.api.cloud.region.v1.Region.verify|verify} messages.
                         * @param message Region message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.region.v1.IRegion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Region message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Region
                         * @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): temporal.api.cloud.region.v1.Region;

                        /**
                         * Decodes a Region message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Region
                         * @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)): temporal.api.cloud.region.v1.Region;

                        /**
                         * Creates a Region message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Region
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.region.v1.Region;

                        /**
                         * Creates a plain object from a Region message. Also converts values to other types if specified.
                         * @param message Region
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.region.v1.Region, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Region to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Region
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Region {

                        /** The cloud provider that's hosting the region. */
                        enum CloudProvider {
                            CLOUD_PROVIDER_UNSPECIFIED = 0,
                            CLOUD_PROVIDER_AWS = 1,
                            CLOUD_PROVIDER_GCP = 2
                        }
                    }
                }
            }

            /** Namespace account. */
            namespace account {

                /** Namespace v1. */
                namespace v1 {

                    /** Properties of a MetricsSpec. */
                    interface IMetricsSpec {

                        /**
                         * The ca cert(s) in PEM format that clients connecting to the metrics endpoint can use for authentication.
                         * This must only be one value, but the CA can have a chain.
                         */
                        acceptedClientCa?: (Uint8Array|null);
                    }

                    /** Represents a MetricsSpec. */
                    class MetricsSpec implements IMetricsSpec {

                        /**
                         * Constructs a new MetricsSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.account.v1.IMetricsSpec);

                        /**
                         * The ca cert(s) in PEM format that clients connecting to the metrics endpoint can use for authentication.
                         * This must only be one value, but the CA can have a chain.
                         */
                        public acceptedClientCa: Uint8Array;

                        /**
                         * Creates a new MetricsSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MetricsSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.account.v1.IMetricsSpec): temporal.api.cloud.account.v1.MetricsSpec;

                        /**
                         * Encodes the specified MetricsSpec message. Does not implicitly {@link temporal.api.cloud.account.v1.MetricsSpec.verify|verify} messages.
                         * @param message MetricsSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.account.v1.IMetricsSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MetricsSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.account.v1.MetricsSpec.verify|verify} messages.
                         * @param message MetricsSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.account.v1.IMetricsSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MetricsSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MetricsSpec
                         * @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): temporal.api.cloud.account.v1.MetricsSpec;

                        /**
                         * Decodes a MetricsSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MetricsSpec
                         * @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)): temporal.api.cloud.account.v1.MetricsSpec;

                        /**
                         * Creates a MetricsSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MetricsSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.account.v1.MetricsSpec;

                        /**
                         * Creates a plain object from a MetricsSpec message. Also converts values to other types if specified.
                         * @param message MetricsSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.account.v1.MetricsSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MetricsSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MetricsSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AccountSpec. */
                    interface IAccountSpec {

                        /**
                         * The metrics specification for this account.
                         * If not specified, metrics will not be enabled.
                         */
                        metrics?: (temporal.api.cloud.account.v1.IMetricsSpec|null);
                    }

                    /** Represents an AccountSpec. */
                    class AccountSpec implements IAccountSpec {

                        /**
                         * Constructs a new AccountSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.account.v1.IAccountSpec);

                        /**
                         * The metrics specification for this account.
                         * If not specified, metrics will not be enabled.
                         */
                        public metrics?: (temporal.api.cloud.account.v1.IMetricsSpec|null);

                        /**
                         * Creates a new AccountSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.account.v1.IAccountSpec): temporal.api.cloud.account.v1.AccountSpec;

                        /**
                         * Encodes the specified AccountSpec message. Does not implicitly {@link temporal.api.cloud.account.v1.AccountSpec.verify|verify} messages.
                         * @param message AccountSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.account.v1.IAccountSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.account.v1.AccountSpec.verify|verify} messages.
                         * @param message AccountSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.account.v1.IAccountSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AccountSpec
                         * @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): temporal.api.cloud.account.v1.AccountSpec;

                        /**
                         * Decodes an AccountSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AccountSpec
                         * @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)): temporal.api.cloud.account.v1.AccountSpec;

                        /**
                         * Creates an AccountSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AccountSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.account.v1.AccountSpec;

                        /**
                         * Creates a plain object from an AccountSpec message. Also converts values to other types if specified.
                         * @param message AccountSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.account.v1.AccountSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AccountSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Metrics. */
                    interface IMetrics {

                        /**
                         * The prometheus metrics endpoint uri.
                         * This is only populated when the metrics is enabled in the metrics specification.
                         */
                        uri?: (string|null);
                    }

                    /** Represents a Metrics. */
                    class Metrics implements IMetrics {

                        /**
                         * Constructs a new Metrics.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.account.v1.IMetrics);

                        /**
                         * The prometheus metrics endpoint uri.
                         * This is only populated when the metrics is enabled in the metrics specification.
                         */
                        public uri: string;

                        /**
                         * Creates a new Metrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Metrics instance
                         */
                        public static create(properties?: temporal.api.cloud.account.v1.IMetrics): temporal.api.cloud.account.v1.Metrics;

                        /**
                         * Encodes the specified Metrics message. Does not implicitly {@link temporal.api.cloud.account.v1.Metrics.verify|verify} messages.
                         * @param message Metrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.account.v1.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Metrics message, length delimited. Does not implicitly {@link temporal.api.cloud.account.v1.Metrics.verify|verify} messages.
                         * @param message Metrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.account.v1.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Metrics message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Metrics
                         * @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): temporal.api.cloud.account.v1.Metrics;

                        /**
                         * Decodes a Metrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Metrics
                         * @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)): temporal.api.cloud.account.v1.Metrics;

                        /**
                         * Creates a Metrics message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Metrics
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.account.v1.Metrics;

                        /**
                         * Creates a plain object from a Metrics message. Also converts values to other types if specified.
                         * @param message Metrics
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.account.v1.Metrics, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Metrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Metrics
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an Account. */
                    interface IAccount {

                        /** The id of the account. */
                        id?: (string|null);

                        /** The account specification. */
                        spec?: (temporal.api.cloud.account.v1.IAccountSpec|null);

                        /**
                         * The current version of the account specification.
                         * The next update operation will have to include this version.
                         */
                        resourceVersion?: (string|null);

                        /** The current state of the account. */
                        state?: (temporal.api.cloud.resource.v1.ResourceState|null);

                        /** The id of the async operation that is updating the account, if any. */
                        asyncOperationId?: (string|null);

                        /** Information related to metrics. */
                        metrics?: (temporal.api.cloud.account.v1.IMetrics|null);
                    }

                    /** Represents an Account. */
                    class Account implements IAccount {

                        /**
                         * Constructs a new Account.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.account.v1.IAccount);

                        /** The id of the account. */
                        public id: string;

                        /** The account specification. */
                        public spec?: (temporal.api.cloud.account.v1.IAccountSpec|null);

                        /**
                         * The current version of the account specification.
                         * The next update operation will have to include this version.
                         */
                        public resourceVersion: string;

                        /** The current state of the account. */
                        public state: temporal.api.cloud.resource.v1.ResourceState;

                        /** The id of the async operation that is updating the account, if any. */
                        public asyncOperationId: string;

                        /** Information related to metrics. */
                        public metrics?: (temporal.api.cloud.account.v1.IMetrics|null);

                        /**
                         * Creates a new Account instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Account instance
                         */
                        public static create(properties?: temporal.api.cloud.account.v1.IAccount): temporal.api.cloud.account.v1.Account;

                        /**
                         * Encodes the specified Account message. Does not implicitly {@link temporal.api.cloud.account.v1.Account.verify|verify} messages.
                         * @param message Account message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.account.v1.IAccount, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Account message, length delimited. Does not implicitly {@link temporal.api.cloud.account.v1.Account.verify|verify} messages.
                         * @param message Account message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.account.v1.IAccount, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Account message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Account
                         * @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): temporal.api.cloud.account.v1.Account;

                        /**
                         * Decodes an Account message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Account
                         * @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)): temporal.api.cloud.account.v1.Account;

                        /**
                         * Creates an Account message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Account
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.account.v1.Account;

                        /**
                         * Creates a plain object from an Account message. Also converts values to other types if specified.
                         * @param message Account
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.account.v1.Account, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Account to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Account
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AuditLogSinkSpec. */
                    interface IAuditLogSinkSpec {

                        /** Name of the sink e.g. "audit_log_01" */
                        name?: (string|null);

                        /** The KinesisSpec when destination_type is Kinesis */
                        kinesisSink?: (temporal.api.cloud.sink.v1.IKinesisSpec|null);

                        /** The PubSubSpec when destination_type is PubSub */
                        pubSubSink?: (temporal.api.cloud.sink.v1.IPubSubSpec|null);

                        /** Enabled indicates whether the sink is enabled or not. */
                        enabled?: (boolean|null);
                    }

                    /** AuditLogSinkSpec is only used by Audit Log */
                    class AuditLogSinkSpec implements IAuditLogSinkSpec {

                        /**
                         * Constructs a new AuditLogSinkSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.account.v1.IAuditLogSinkSpec);

                        /** Name of the sink e.g. "audit_log_01" */
                        public name: string;

                        /** The KinesisSpec when destination_type is Kinesis */
                        public kinesisSink?: (temporal.api.cloud.sink.v1.IKinesisSpec|null);

                        /** The PubSubSpec when destination_type is PubSub */
                        public pubSubSink?: (temporal.api.cloud.sink.v1.IPubSubSpec|null);

                        /** Enabled indicates whether the sink is enabled or not. */
                        public enabled: boolean;

                        /** AuditLogSinkSpec sinkType. */
                        public sinkType?: ("kinesisSink"|"pubSubSink");

                        /**
                         * Creates a new AuditLogSinkSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AuditLogSinkSpec instance
                         */
                        public static create(properties?: temporal.api.cloud.account.v1.IAuditLogSinkSpec): temporal.api.cloud.account.v1.AuditLogSinkSpec;

                        /**
                         * Encodes the specified AuditLogSinkSpec message. Does not implicitly {@link temporal.api.cloud.account.v1.AuditLogSinkSpec.verify|verify} messages.
                         * @param message AuditLogSinkSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.account.v1.IAuditLogSinkSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AuditLogSinkSpec message, length delimited. Does not implicitly {@link temporal.api.cloud.account.v1.AuditLogSinkSpec.verify|verify} messages.
                         * @param message AuditLogSinkSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.account.v1.IAuditLogSinkSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AuditLogSinkSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AuditLogSinkSpec
                         * @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): temporal.api.cloud.account.v1.AuditLogSinkSpec;

                        /**
                         * Decodes an AuditLogSinkSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AuditLogSinkSpec
                         * @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)): temporal.api.cloud.account.v1.AuditLogSinkSpec;

                        /**
                         * Creates an AuditLogSinkSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AuditLogSinkSpec
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.account.v1.AuditLogSinkSpec;

                        /**
                         * Creates a plain object from an AuditLogSinkSpec message. Also converts values to other types if specified.
                         * @param message AuditLogSinkSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.account.v1.AuditLogSinkSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AuditLogSinkSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AuditLogSinkSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }
            }

            /** Namespace usage. */
            namespace usage {

                /** Namespace v1. */
                namespace v1 {

                    /** Properties of a Summary. */
                    interface ISummary {

                        /** Start of UTC day for now (inclusive) */
                        startTime?: (google.protobuf.ITimestamp|null);

                        /** End of UTC day for now (exclusive) */
                        endTime?: (google.protobuf.ITimestamp|null);

                        /** Records grouped by namespace */
                        recordGroups?: (temporal.api.cloud.usage.v1.IRecordGroup[]|null);

                        /**
                         * True if data for given time window is not fully available yet (e.g. delays)
                         * When true, records for the given time range could still be added/updated in the future (until false)
                         */
                        incomplete?: (boolean|null);
                    }

                    /** Represents a Summary. */
                    class Summary implements ISummary {

                        /**
                         * Constructs a new Summary.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.usage.v1.ISummary);

                        /** Start of UTC day for now (inclusive) */
                        public startTime?: (google.protobuf.ITimestamp|null);

                        /** End of UTC day for now (exclusive) */
                        public endTime?: (google.protobuf.ITimestamp|null);

                        /** Records grouped by namespace */
                        public recordGroups: temporal.api.cloud.usage.v1.IRecordGroup[];

                        /**
                         * True if data for given time window is not fully available yet (e.g. delays)
                         * When true, records for the given time range could still be added/updated in the future (until false)
                         */
                        public incomplete: boolean;

                        /**
                         * Creates a new Summary instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Summary instance
                         */
                        public static create(properties?: temporal.api.cloud.usage.v1.ISummary): temporal.api.cloud.usage.v1.Summary;

                        /**
                         * Encodes the specified Summary message. Does not implicitly {@link temporal.api.cloud.usage.v1.Summary.verify|verify} messages.
                         * @param message Summary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.usage.v1.ISummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Summary message, length delimited. Does not implicitly {@link temporal.api.cloud.usage.v1.Summary.verify|verify} messages.
                         * @param message Summary message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.usage.v1.ISummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Summary message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Summary
                         * @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): temporal.api.cloud.usage.v1.Summary;

                        /**
                         * Decodes a Summary message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Summary
                         * @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)): temporal.api.cloud.usage.v1.Summary;

                        /**
                         * Creates a Summary message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Summary
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.usage.v1.Summary;

                        /**
                         * Creates a plain object from a Summary message. Also converts values to other types if specified.
                         * @param message Summary
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.usage.v1.Summary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Summary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Summary
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RecordGroup. */
                    interface IRecordGroup {

                        /** GroupBy keys and their values for this record group. Multiple fields are combined with logical AND. */
                        groupBys?: (temporal.api.cloud.usage.v1.IGroupBy[]|null);

                        /** RecordGroup records */
                        records?: (temporal.api.cloud.usage.v1.IRecord[]|null);
                    }

                    /** Represents a RecordGroup. */
                    class RecordGroup implements IRecordGroup {

                        /**
                         * Constructs a new RecordGroup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.usage.v1.IRecordGroup);

                        /** GroupBy keys and their values for this record group. Multiple fields are combined with logical AND. */
                        public groupBys: temporal.api.cloud.usage.v1.IGroupBy[];

                        /** RecordGroup records. */
                        public records: temporal.api.cloud.usage.v1.IRecord[];

                        /**
                         * Creates a new RecordGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RecordGroup instance
                         */
                        public static create(properties?: temporal.api.cloud.usage.v1.IRecordGroup): temporal.api.cloud.usage.v1.RecordGroup;

                        /**
                         * Encodes the specified RecordGroup message. Does not implicitly {@link temporal.api.cloud.usage.v1.RecordGroup.verify|verify} messages.
                         * @param message RecordGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.usage.v1.IRecordGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RecordGroup message, length delimited. Does not implicitly {@link temporal.api.cloud.usage.v1.RecordGroup.verify|verify} messages.
                         * @param message RecordGroup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.usage.v1.IRecordGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RecordGroup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RecordGroup
                         * @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): temporal.api.cloud.usage.v1.RecordGroup;

                        /**
                         * Decodes a RecordGroup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RecordGroup
                         * @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)): temporal.api.cloud.usage.v1.RecordGroup;

                        /**
                         * Creates a RecordGroup message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RecordGroup
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.usage.v1.RecordGroup;

                        /**
                         * Creates a plain object from a RecordGroup message. Also converts values to other types if specified.
                         * @param message RecordGroup
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.usage.v1.RecordGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RecordGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RecordGroup
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a GroupBy. */
                    interface IGroupBy {

                        /** GroupBy key */
                        key?: (temporal.api.cloud.usage.v1.GroupByKey|null);

                        /** GroupBy value */
                        value?: (string|null);
                    }

                    /** Represents a GroupBy. */
                    class GroupBy implements IGroupBy {

                        /**
                         * Constructs a new GroupBy.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.usage.v1.IGroupBy);

                        /** GroupBy key. */
                        public key: temporal.api.cloud.usage.v1.GroupByKey;

                        /** GroupBy value. */
                        public value: string;

                        /**
                         * Creates a new GroupBy instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GroupBy instance
                         */
                        public static create(properties?: temporal.api.cloud.usage.v1.IGroupBy): temporal.api.cloud.usage.v1.GroupBy;

                        /**
                         * Encodes the specified GroupBy message. Does not implicitly {@link temporal.api.cloud.usage.v1.GroupBy.verify|verify} messages.
                         * @param message GroupBy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.usage.v1.IGroupBy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GroupBy message, length delimited. Does not implicitly {@link temporal.api.cloud.usage.v1.GroupBy.verify|verify} messages.
                         * @param message GroupBy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.usage.v1.IGroupBy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GroupBy message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GroupBy
                         * @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): temporal.api.cloud.usage.v1.GroupBy;

                        /**
                         * Decodes a GroupBy message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GroupBy
                         * @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)): temporal.api.cloud.usage.v1.GroupBy;

                        /**
                         * Creates a GroupBy message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GroupBy
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.usage.v1.GroupBy;

                        /**
                         * Creates a plain object from a GroupBy message. Also converts values to other types if specified.
                         * @param message GroupBy
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.usage.v1.GroupBy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GroupBy to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GroupBy
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Record. */
                    interface IRecord {

                        /** Record type */
                        type?: (temporal.api.cloud.usage.v1.RecordType|null);

                        /** Record unit */
                        unit?: (temporal.api.cloud.usage.v1.RecordUnit|null);

                        /** Record value */
                        value?: (number|null);
                    }

                    /** Represents a Record. */
                    class Record implements IRecord {

                        /**
                         * Constructs a new Record.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.cloud.usage.v1.IRecord);

                        /** Record type. */
                        public type: temporal.api.cloud.usage.v1.RecordType;

                        /** Record unit. */
                        public unit: temporal.api.cloud.usage.v1.RecordUnit;

                        /** Record value. */
                        public value: number;

                        /**
                         * Creates a new Record instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Record instance
                         */
                        public static create(properties?: temporal.api.cloud.usage.v1.IRecord): temporal.api.cloud.usage.v1.Record;

                        /**
                         * Encodes the specified Record message. Does not implicitly {@link temporal.api.cloud.usage.v1.Record.verify|verify} messages.
                         * @param message Record message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.cloud.usage.v1.IRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Record message, length delimited. Does not implicitly {@link temporal.api.cloud.usage.v1.Record.verify|verify} messages.
                         * @param message Record message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.cloud.usage.v1.IRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Record message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Record
                         * @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): temporal.api.cloud.usage.v1.Record;

                        /**
                         * Decodes a Record message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Record
                         * @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)): temporal.api.cloud.usage.v1.Record;

                        /**
                         * Creates a Record message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Record
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.cloud.usage.v1.Record;

                        /**
                         * Creates a plain object from a Record message. Also converts values to other types if specified.
                         * @param message Record
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.cloud.usage.v1.Record, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Record to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Record
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** RecordType enum. */
                    enum RecordType {
                        RECORD_TYPE_UNSPECIFIED = 0,
                        RECORD_TYPE_ACTIONS = 1,
                        RECORD_TYPE_ACTIVE_STORAGE = 2,
                        RECORD_TYPE_RETAINED_STORAGE = 3
                    }

                    /** RecordUnit enum. */
                    enum RecordUnit {
                        RECORD_UNIT_UNSPECIFIED = 0,
                        RECORD_UNIT_NUMBER = 1,
                        RECORD_UNIT_BYTE_SECONDS = 2
                    }

                    /** GroupByKey enum. */
                    enum GroupByKey {
                        GROUP_BY_KEY_UNSPECIFIED = 0,
                        GROUP_BY_KEY_NAMESPACE = 1
                    }
                }
            }
        }

        /** Namespace errordetails. */
        namespace errordetails {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a NotFoundFailure. */
                interface INotFoundFailure {

                    /** NotFoundFailure currentCluster */
                    currentCluster?: (string|null);

                    /** NotFoundFailure activeCluster */
                    activeCluster?: (string|null);
                }

                /** Represents a NotFoundFailure. */
                class NotFoundFailure implements INotFoundFailure {

                    /**
                     * Constructs a new NotFoundFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.INotFoundFailure);

                    /** NotFoundFailure currentCluster. */
                    public currentCluster: string;

                    /** NotFoundFailure activeCluster. */
                    public activeCluster: string;

                    /**
                     * Creates a new NotFoundFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NotFoundFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.INotFoundFailure): temporal.api.errordetails.v1.NotFoundFailure;

                    /**
                     * Encodes the specified NotFoundFailure message. Does not implicitly {@link temporal.api.errordetails.v1.NotFoundFailure.verify|verify} messages.
                     * @param message NotFoundFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.INotFoundFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NotFoundFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.NotFoundFailure.verify|verify} messages.
                     * @param message NotFoundFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.INotFoundFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NotFoundFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NotFoundFailure
                     * @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): temporal.api.errordetails.v1.NotFoundFailure;

                    /**
                     * Decodes a NotFoundFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NotFoundFailure
                     * @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)): temporal.api.errordetails.v1.NotFoundFailure;

                    /**
                     * Creates a NotFoundFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NotFoundFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.NotFoundFailure;

                    /**
                     * Creates a plain object from a NotFoundFailure message. Also converts values to other types if specified.
                     * @param message NotFoundFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.NotFoundFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NotFoundFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NotFoundFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowExecutionAlreadyStartedFailure. */
                interface IWorkflowExecutionAlreadyStartedFailure {

                    /** WorkflowExecutionAlreadyStartedFailure startRequestId */
                    startRequestId?: (string|null);

                    /** WorkflowExecutionAlreadyStartedFailure runId */
                    runId?: (string|null);
                }

                /** Represents a WorkflowExecutionAlreadyStartedFailure. */
                class WorkflowExecutionAlreadyStartedFailure implements IWorkflowExecutionAlreadyStartedFailure {

                    /**
                     * Constructs a new WorkflowExecutionAlreadyStartedFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.IWorkflowExecutionAlreadyStartedFailure);

                    /** WorkflowExecutionAlreadyStartedFailure startRequestId. */
                    public startRequestId: string;

                    /** WorkflowExecutionAlreadyStartedFailure runId. */
                    public runId: string;

                    /**
                     * Creates a new WorkflowExecutionAlreadyStartedFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowExecutionAlreadyStartedFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.IWorkflowExecutionAlreadyStartedFailure): temporal.api.errordetails.v1.WorkflowExecutionAlreadyStartedFailure;

                    /**
                     * Encodes the specified WorkflowExecutionAlreadyStartedFailure message. Does not implicitly {@link temporal.api.errordetails.v1.WorkflowExecutionAlreadyStartedFailure.verify|verify} messages.
                     * @param message WorkflowExecutionAlreadyStartedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.IWorkflowExecutionAlreadyStartedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowExecutionAlreadyStartedFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.WorkflowExecutionAlreadyStartedFailure.verify|verify} messages.
                     * @param message WorkflowExecutionAlreadyStartedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.IWorkflowExecutionAlreadyStartedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowExecutionAlreadyStartedFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowExecutionAlreadyStartedFailure
                     * @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): temporal.api.errordetails.v1.WorkflowExecutionAlreadyStartedFailure;

                    /**
                     * Decodes a WorkflowExecutionAlreadyStartedFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowExecutionAlreadyStartedFailure
                     * @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)): temporal.api.errordetails.v1.WorkflowExecutionAlreadyStartedFailure;

                    /**
                     * Creates a WorkflowExecutionAlreadyStartedFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowExecutionAlreadyStartedFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.WorkflowExecutionAlreadyStartedFailure;

                    /**
                     * Creates a plain object from a WorkflowExecutionAlreadyStartedFailure message. Also converts values to other types if specified.
                     * @param message WorkflowExecutionAlreadyStartedFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.WorkflowExecutionAlreadyStartedFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowExecutionAlreadyStartedFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowExecutionAlreadyStartedFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NamespaceNotActiveFailure. */
                interface INamespaceNotActiveFailure {

                    /** NamespaceNotActiveFailure namespace */
                    namespace?: (string|null);

                    /** NamespaceNotActiveFailure currentCluster */
                    currentCluster?: (string|null);

                    /** NamespaceNotActiveFailure activeCluster */
                    activeCluster?: (string|null);
                }

                /** Represents a NamespaceNotActiveFailure. */
                class NamespaceNotActiveFailure implements INamespaceNotActiveFailure {

                    /**
                     * Constructs a new NamespaceNotActiveFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.INamespaceNotActiveFailure);

                    /** NamespaceNotActiveFailure namespace. */
                    public namespace: string;

                    /** NamespaceNotActiveFailure currentCluster. */
                    public currentCluster: string;

                    /** NamespaceNotActiveFailure activeCluster. */
                    public activeCluster: string;

                    /**
                     * Creates a new NamespaceNotActiveFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NamespaceNotActiveFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.INamespaceNotActiveFailure): temporal.api.errordetails.v1.NamespaceNotActiveFailure;

                    /**
                     * Encodes the specified NamespaceNotActiveFailure message. Does not implicitly {@link temporal.api.errordetails.v1.NamespaceNotActiveFailure.verify|verify} messages.
                     * @param message NamespaceNotActiveFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.INamespaceNotActiveFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NamespaceNotActiveFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.NamespaceNotActiveFailure.verify|verify} messages.
                     * @param message NamespaceNotActiveFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.INamespaceNotActiveFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NamespaceNotActiveFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NamespaceNotActiveFailure
                     * @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): temporal.api.errordetails.v1.NamespaceNotActiveFailure;

                    /**
                     * Decodes a NamespaceNotActiveFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NamespaceNotActiveFailure
                     * @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)): temporal.api.errordetails.v1.NamespaceNotActiveFailure;

                    /**
                     * Creates a NamespaceNotActiveFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NamespaceNotActiveFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.NamespaceNotActiveFailure;

                    /**
                     * Creates a plain object from a NamespaceNotActiveFailure message. Also converts values to other types if specified.
                     * @param message NamespaceNotActiveFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.NamespaceNotActiveFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NamespaceNotActiveFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NamespaceNotActiveFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NamespaceUnavailableFailure. */
                interface INamespaceUnavailableFailure {

                    /** NamespaceUnavailableFailure namespace */
                    namespace?: (string|null);
                }

                /**
                 * NamespaceUnavailableFailure is returned by the service when a request addresses a namespace that is unavailable. For
                 * example, when a namespace is in the process of failing over between clusters.
                 * This is a transient error that should be automatically retried by clients.
                 */
                class NamespaceUnavailableFailure implements INamespaceUnavailableFailure {

                    /**
                     * Constructs a new NamespaceUnavailableFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.INamespaceUnavailableFailure);

                    /** NamespaceUnavailableFailure namespace. */
                    public namespace: string;

                    /**
                     * Creates a new NamespaceUnavailableFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NamespaceUnavailableFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.INamespaceUnavailableFailure): temporal.api.errordetails.v1.NamespaceUnavailableFailure;

                    /**
                     * Encodes the specified NamespaceUnavailableFailure message. Does not implicitly {@link temporal.api.errordetails.v1.NamespaceUnavailableFailure.verify|verify} messages.
                     * @param message NamespaceUnavailableFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.INamespaceUnavailableFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NamespaceUnavailableFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.NamespaceUnavailableFailure.verify|verify} messages.
                     * @param message NamespaceUnavailableFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.INamespaceUnavailableFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NamespaceUnavailableFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NamespaceUnavailableFailure
                     * @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): temporal.api.errordetails.v1.NamespaceUnavailableFailure;

                    /**
                     * Decodes a NamespaceUnavailableFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NamespaceUnavailableFailure
                     * @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)): temporal.api.errordetails.v1.NamespaceUnavailableFailure;

                    /**
                     * Creates a NamespaceUnavailableFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NamespaceUnavailableFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.NamespaceUnavailableFailure;

                    /**
                     * Creates a plain object from a NamespaceUnavailableFailure message. Also converts values to other types if specified.
                     * @param message NamespaceUnavailableFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.NamespaceUnavailableFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NamespaceUnavailableFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NamespaceUnavailableFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NamespaceInvalidStateFailure. */
                interface INamespaceInvalidStateFailure {

                    /** NamespaceInvalidStateFailure namespace */
                    namespace?: (string|null);

                    /** Current state of the requested namespace. */
                    state?: (temporal.api.enums.v1.NamespaceState|null);

                    /**
                     * Allowed namespace states for requested operation.
                     * For example NAMESPACE_STATE_DELETED is forbidden for most operations but allowed for DescribeNamespace.
                     */
                    allowedStates?: (temporal.api.enums.v1.NamespaceState[]|null);
                }

                /** Represents a NamespaceInvalidStateFailure. */
                class NamespaceInvalidStateFailure implements INamespaceInvalidStateFailure {

                    /**
                     * Constructs a new NamespaceInvalidStateFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.INamespaceInvalidStateFailure);

                    /** NamespaceInvalidStateFailure namespace. */
                    public namespace: string;

                    /** Current state of the requested namespace. */
                    public state: temporal.api.enums.v1.NamespaceState;

                    /**
                     * Allowed namespace states for requested operation.
                     * For example NAMESPACE_STATE_DELETED is forbidden for most operations but allowed for DescribeNamespace.
                     */
                    public allowedStates: temporal.api.enums.v1.NamespaceState[];

                    /**
                     * Creates a new NamespaceInvalidStateFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NamespaceInvalidStateFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.INamespaceInvalidStateFailure): temporal.api.errordetails.v1.NamespaceInvalidStateFailure;

                    /**
                     * Encodes the specified NamespaceInvalidStateFailure message. Does not implicitly {@link temporal.api.errordetails.v1.NamespaceInvalidStateFailure.verify|verify} messages.
                     * @param message NamespaceInvalidStateFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.INamespaceInvalidStateFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NamespaceInvalidStateFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.NamespaceInvalidStateFailure.verify|verify} messages.
                     * @param message NamespaceInvalidStateFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.INamespaceInvalidStateFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NamespaceInvalidStateFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NamespaceInvalidStateFailure
                     * @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): temporal.api.errordetails.v1.NamespaceInvalidStateFailure;

                    /**
                     * Decodes a NamespaceInvalidStateFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NamespaceInvalidStateFailure
                     * @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)): temporal.api.errordetails.v1.NamespaceInvalidStateFailure;

                    /**
                     * Creates a NamespaceInvalidStateFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NamespaceInvalidStateFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.NamespaceInvalidStateFailure;

                    /**
                     * Creates a plain object from a NamespaceInvalidStateFailure message. Also converts values to other types if specified.
                     * @param message NamespaceInvalidStateFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.NamespaceInvalidStateFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NamespaceInvalidStateFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NamespaceInvalidStateFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NamespaceNotFoundFailure. */
                interface INamespaceNotFoundFailure {

                    /** NamespaceNotFoundFailure namespace */
                    namespace?: (string|null);
                }

                /** Represents a NamespaceNotFoundFailure. */
                class NamespaceNotFoundFailure implements INamespaceNotFoundFailure {

                    /**
                     * Constructs a new NamespaceNotFoundFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.INamespaceNotFoundFailure);

                    /** NamespaceNotFoundFailure namespace. */
                    public namespace: string;

                    /**
                     * Creates a new NamespaceNotFoundFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NamespaceNotFoundFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.INamespaceNotFoundFailure): temporal.api.errordetails.v1.NamespaceNotFoundFailure;

                    /**
                     * Encodes the specified NamespaceNotFoundFailure message. Does not implicitly {@link temporal.api.errordetails.v1.NamespaceNotFoundFailure.verify|verify} messages.
                     * @param message NamespaceNotFoundFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.INamespaceNotFoundFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NamespaceNotFoundFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.NamespaceNotFoundFailure.verify|verify} messages.
                     * @param message NamespaceNotFoundFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.INamespaceNotFoundFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NamespaceNotFoundFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NamespaceNotFoundFailure
                     * @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): temporal.api.errordetails.v1.NamespaceNotFoundFailure;

                    /**
                     * Decodes a NamespaceNotFoundFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NamespaceNotFoundFailure
                     * @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)): temporal.api.errordetails.v1.NamespaceNotFoundFailure;

                    /**
                     * Creates a NamespaceNotFoundFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NamespaceNotFoundFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.NamespaceNotFoundFailure;

                    /**
                     * Creates a plain object from a NamespaceNotFoundFailure message. Also converts values to other types if specified.
                     * @param message NamespaceNotFoundFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.NamespaceNotFoundFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NamespaceNotFoundFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NamespaceNotFoundFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NamespaceAlreadyExistsFailure. */
                interface INamespaceAlreadyExistsFailure {
                }

                /** Represents a NamespaceAlreadyExistsFailure. */
                class NamespaceAlreadyExistsFailure implements INamespaceAlreadyExistsFailure {

                    /**
                     * Constructs a new NamespaceAlreadyExistsFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.INamespaceAlreadyExistsFailure);

                    /**
                     * Creates a new NamespaceAlreadyExistsFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NamespaceAlreadyExistsFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.INamespaceAlreadyExistsFailure): temporal.api.errordetails.v1.NamespaceAlreadyExistsFailure;

                    /**
                     * Encodes the specified NamespaceAlreadyExistsFailure message. Does not implicitly {@link temporal.api.errordetails.v1.NamespaceAlreadyExistsFailure.verify|verify} messages.
                     * @param message NamespaceAlreadyExistsFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.INamespaceAlreadyExistsFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NamespaceAlreadyExistsFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.NamespaceAlreadyExistsFailure.verify|verify} messages.
                     * @param message NamespaceAlreadyExistsFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.INamespaceAlreadyExistsFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NamespaceAlreadyExistsFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NamespaceAlreadyExistsFailure
                     * @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): temporal.api.errordetails.v1.NamespaceAlreadyExistsFailure;

                    /**
                     * Decodes a NamespaceAlreadyExistsFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NamespaceAlreadyExistsFailure
                     * @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)): temporal.api.errordetails.v1.NamespaceAlreadyExistsFailure;

                    /**
                     * Creates a NamespaceAlreadyExistsFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NamespaceAlreadyExistsFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.NamespaceAlreadyExistsFailure;

                    /**
                     * Creates a plain object from a NamespaceAlreadyExistsFailure message. Also converts values to other types if specified.
                     * @param message NamespaceAlreadyExistsFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.NamespaceAlreadyExistsFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NamespaceAlreadyExistsFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NamespaceAlreadyExistsFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ClientVersionNotSupportedFailure. */
                interface IClientVersionNotSupportedFailure {

                    /** ClientVersionNotSupportedFailure clientVersion */
                    clientVersion?: (string|null);

                    /** ClientVersionNotSupportedFailure clientName */
                    clientName?: (string|null);

                    /** ClientVersionNotSupportedFailure supportedVersions */
                    supportedVersions?: (string|null);
                }

                /** Represents a ClientVersionNotSupportedFailure. */
                class ClientVersionNotSupportedFailure implements IClientVersionNotSupportedFailure {

                    /**
                     * Constructs a new ClientVersionNotSupportedFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.IClientVersionNotSupportedFailure);

                    /** ClientVersionNotSupportedFailure clientVersion. */
                    public clientVersion: string;

                    /** ClientVersionNotSupportedFailure clientName. */
                    public clientName: string;

                    /** ClientVersionNotSupportedFailure supportedVersions. */
                    public supportedVersions: string;

                    /**
                     * Creates a new ClientVersionNotSupportedFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ClientVersionNotSupportedFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.IClientVersionNotSupportedFailure): temporal.api.errordetails.v1.ClientVersionNotSupportedFailure;

                    /**
                     * Encodes the specified ClientVersionNotSupportedFailure message. Does not implicitly {@link temporal.api.errordetails.v1.ClientVersionNotSupportedFailure.verify|verify} messages.
                     * @param message ClientVersionNotSupportedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.IClientVersionNotSupportedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ClientVersionNotSupportedFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.ClientVersionNotSupportedFailure.verify|verify} messages.
                     * @param message ClientVersionNotSupportedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.IClientVersionNotSupportedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ClientVersionNotSupportedFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ClientVersionNotSupportedFailure
                     * @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): temporal.api.errordetails.v1.ClientVersionNotSupportedFailure;

                    /**
                     * Decodes a ClientVersionNotSupportedFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ClientVersionNotSupportedFailure
                     * @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)): temporal.api.errordetails.v1.ClientVersionNotSupportedFailure;

                    /**
                     * Creates a ClientVersionNotSupportedFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ClientVersionNotSupportedFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.ClientVersionNotSupportedFailure;

                    /**
                     * Creates a plain object from a ClientVersionNotSupportedFailure message. Also converts values to other types if specified.
                     * @param message ClientVersionNotSupportedFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.ClientVersionNotSupportedFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ClientVersionNotSupportedFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ClientVersionNotSupportedFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ServerVersionNotSupportedFailure. */
                interface IServerVersionNotSupportedFailure {

                    /** ServerVersionNotSupportedFailure serverVersion */
                    serverVersion?: (string|null);

                    /** ServerVersionNotSupportedFailure clientSupportedServerVersions */
                    clientSupportedServerVersions?: (string|null);
                }

                /** Represents a ServerVersionNotSupportedFailure. */
                class ServerVersionNotSupportedFailure implements IServerVersionNotSupportedFailure {

                    /**
                     * Constructs a new ServerVersionNotSupportedFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.IServerVersionNotSupportedFailure);

                    /** ServerVersionNotSupportedFailure serverVersion. */
                    public serverVersion: string;

                    /** ServerVersionNotSupportedFailure clientSupportedServerVersions. */
                    public clientSupportedServerVersions: string;

                    /**
                     * Creates a new ServerVersionNotSupportedFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ServerVersionNotSupportedFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.IServerVersionNotSupportedFailure): temporal.api.errordetails.v1.ServerVersionNotSupportedFailure;

                    /**
                     * Encodes the specified ServerVersionNotSupportedFailure message. Does not implicitly {@link temporal.api.errordetails.v1.ServerVersionNotSupportedFailure.verify|verify} messages.
                     * @param message ServerVersionNotSupportedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.IServerVersionNotSupportedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ServerVersionNotSupportedFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.ServerVersionNotSupportedFailure.verify|verify} messages.
                     * @param message ServerVersionNotSupportedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.IServerVersionNotSupportedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ServerVersionNotSupportedFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ServerVersionNotSupportedFailure
                     * @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): temporal.api.errordetails.v1.ServerVersionNotSupportedFailure;

                    /**
                     * Decodes a ServerVersionNotSupportedFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ServerVersionNotSupportedFailure
                     * @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)): temporal.api.errordetails.v1.ServerVersionNotSupportedFailure;

                    /**
                     * Creates a ServerVersionNotSupportedFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ServerVersionNotSupportedFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.ServerVersionNotSupportedFailure;

                    /**
                     * Creates a plain object from a ServerVersionNotSupportedFailure message. Also converts values to other types if specified.
                     * @param message ServerVersionNotSupportedFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.ServerVersionNotSupportedFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ServerVersionNotSupportedFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ServerVersionNotSupportedFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CancellationAlreadyRequestedFailure. */
                interface ICancellationAlreadyRequestedFailure {
                }

                /** Represents a CancellationAlreadyRequestedFailure. */
                class CancellationAlreadyRequestedFailure implements ICancellationAlreadyRequestedFailure {

                    /**
                     * Constructs a new CancellationAlreadyRequestedFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.ICancellationAlreadyRequestedFailure);

                    /**
                     * Creates a new CancellationAlreadyRequestedFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CancellationAlreadyRequestedFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.ICancellationAlreadyRequestedFailure): temporal.api.errordetails.v1.CancellationAlreadyRequestedFailure;

                    /**
                     * Encodes the specified CancellationAlreadyRequestedFailure message. Does not implicitly {@link temporal.api.errordetails.v1.CancellationAlreadyRequestedFailure.verify|verify} messages.
                     * @param message CancellationAlreadyRequestedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.ICancellationAlreadyRequestedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CancellationAlreadyRequestedFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.CancellationAlreadyRequestedFailure.verify|verify} messages.
                     * @param message CancellationAlreadyRequestedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.ICancellationAlreadyRequestedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CancellationAlreadyRequestedFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CancellationAlreadyRequestedFailure
                     * @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): temporal.api.errordetails.v1.CancellationAlreadyRequestedFailure;

                    /**
                     * Decodes a CancellationAlreadyRequestedFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CancellationAlreadyRequestedFailure
                     * @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)): temporal.api.errordetails.v1.CancellationAlreadyRequestedFailure;

                    /**
                     * Creates a CancellationAlreadyRequestedFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CancellationAlreadyRequestedFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.CancellationAlreadyRequestedFailure;

                    /**
                     * Creates a plain object from a CancellationAlreadyRequestedFailure message. Also converts values to other types if specified.
                     * @param message CancellationAlreadyRequestedFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.CancellationAlreadyRequestedFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CancellationAlreadyRequestedFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CancellationAlreadyRequestedFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a QueryFailedFailure. */
                interface IQueryFailedFailure {

                    /**
                     * The full reason for this query failure. May not be available if the response is generated by an old
                     * SDK. This field can be encoded by the SDK's failure converter to support E2E encryption of messages and stack
                     * traces.
                     */
                    failure?: (temporal.api.failure.v1.IFailure|null);
                }

                /** Represents a QueryFailedFailure. */
                class QueryFailedFailure implements IQueryFailedFailure {

                    /**
                     * Constructs a new QueryFailedFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.IQueryFailedFailure);

                    /**
                     * The full reason for this query failure. May not be available if the response is generated by an old
                     * SDK. This field can be encoded by the SDK's failure converter to support E2E encryption of messages and stack
                     * traces.
                     */
                    public failure?: (temporal.api.failure.v1.IFailure|null);

                    /**
                     * Creates a new QueryFailedFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns QueryFailedFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.IQueryFailedFailure): temporal.api.errordetails.v1.QueryFailedFailure;

                    /**
                     * Encodes the specified QueryFailedFailure message. Does not implicitly {@link temporal.api.errordetails.v1.QueryFailedFailure.verify|verify} messages.
                     * @param message QueryFailedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.IQueryFailedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified QueryFailedFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.QueryFailedFailure.verify|verify} messages.
                     * @param message QueryFailedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.IQueryFailedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a QueryFailedFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns QueryFailedFailure
                     * @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): temporal.api.errordetails.v1.QueryFailedFailure;

                    /**
                     * Decodes a QueryFailedFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns QueryFailedFailure
                     * @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)): temporal.api.errordetails.v1.QueryFailedFailure;

                    /**
                     * Creates a QueryFailedFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns QueryFailedFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.QueryFailedFailure;

                    /**
                     * Creates a plain object from a QueryFailedFailure message. Also converts values to other types if specified.
                     * @param message QueryFailedFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.QueryFailedFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this QueryFailedFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for QueryFailedFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PermissionDeniedFailure. */
                interface IPermissionDeniedFailure {

                    /** PermissionDeniedFailure reason */
                    reason?: (string|null);
                }

                /** Represents a PermissionDeniedFailure. */
                class PermissionDeniedFailure implements IPermissionDeniedFailure {

                    /**
                     * Constructs a new PermissionDeniedFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.IPermissionDeniedFailure);

                    /** PermissionDeniedFailure reason. */
                    public reason: string;

                    /**
                     * Creates a new PermissionDeniedFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PermissionDeniedFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.IPermissionDeniedFailure): temporal.api.errordetails.v1.PermissionDeniedFailure;

                    /**
                     * Encodes the specified PermissionDeniedFailure message. Does not implicitly {@link temporal.api.errordetails.v1.PermissionDeniedFailure.verify|verify} messages.
                     * @param message PermissionDeniedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.IPermissionDeniedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PermissionDeniedFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.PermissionDeniedFailure.verify|verify} messages.
                     * @param message PermissionDeniedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.IPermissionDeniedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PermissionDeniedFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PermissionDeniedFailure
                     * @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): temporal.api.errordetails.v1.PermissionDeniedFailure;

                    /**
                     * Decodes a PermissionDeniedFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PermissionDeniedFailure
                     * @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)): temporal.api.errordetails.v1.PermissionDeniedFailure;

                    /**
                     * Creates a PermissionDeniedFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PermissionDeniedFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.PermissionDeniedFailure;

                    /**
                     * Creates a plain object from a PermissionDeniedFailure message. Also converts values to other types if specified.
                     * @param message PermissionDeniedFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.PermissionDeniedFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PermissionDeniedFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PermissionDeniedFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResourceExhaustedFailure. */
                interface IResourceExhaustedFailure {

                    /** ResourceExhaustedFailure cause */
                    cause?: (temporal.api.enums.v1.ResourceExhaustedCause|null);

                    /** ResourceExhaustedFailure scope */
                    scope?: (temporal.api.enums.v1.ResourceExhaustedScope|null);
                }

                /** Represents a ResourceExhaustedFailure. */
                class ResourceExhaustedFailure implements IResourceExhaustedFailure {

                    /**
                     * Constructs a new ResourceExhaustedFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.IResourceExhaustedFailure);

                    /** ResourceExhaustedFailure cause. */
                    public cause: temporal.api.enums.v1.ResourceExhaustedCause;

                    /** ResourceExhaustedFailure scope. */
                    public scope: temporal.api.enums.v1.ResourceExhaustedScope;

                    /**
                     * Creates a new ResourceExhaustedFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResourceExhaustedFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.IResourceExhaustedFailure): temporal.api.errordetails.v1.ResourceExhaustedFailure;

                    /**
                     * Encodes the specified ResourceExhaustedFailure message. Does not implicitly {@link temporal.api.errordetails.v1.ResourceExhaustedFailure.verify|verify} messages.
                     * @param message ResourceExhaustedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.IResourceExhaustedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResourceExhaustedFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.ResourceExhaustedFailure.verify|verify} messages.
                     * @param message ResourceExhaustedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.IResourceExhaustedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResourceExhaustedFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResourceExhaustedFailure
                     * @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): temporal.api.errordetails.v1.ResourceExhaustedFailure;

                    /**
                     * Decodes a ResourceExhaustedFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResourceExhaustedFailure
                     * @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)): temporal.api.errordetails.v1.ResourceExhaustedFailure;

                    /**
                     * Creates a ResourceExhaustedFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResourceExhaustedFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.ResourceExhaustedFailure;

                    /**
                     * Creates a plain object from a ResourceExhaustedFailure message. Also converts values to other types if specified.
                     * @param message ResourceExhaustedFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.ResourceExhaustedFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResourceExhaustedFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResourceExhaustedFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SystemWorkflowFailure. */
                interface ISystemWorkflowFailure {

                    /**
                     * WorkflowId and RunId of the Temporal system workflow performing the underlying operation.
                     * Looking up the info of the system workflow run may help identify the issue causing the failure.
                     */
                    workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** Serialized error returned by the system workflow performing the underlying operation. */
                    workflowError?: (string|null);
                }

                /** Represents a SystemWorkflowFailure. */
                class SystemWorkflowFailure implements ISystemWorkflowFailure {

                    /**
                     * Constructs a new SystemWorkflowFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.ISystemWorkflowFailure);

                    /**
                     * WorkflowId and RunId of the Temporal system workflow performing the underlying operation.
                     * Looking up the info of the system workflow run may help identify the issue causing the failure.
                     */
                    public workflowExecution?: (temporal.api.common.v1.IWorkflowExecution|null);

                    /** Serialized error returned by the system workflow performing the underlying operation. */
                    public workflowError: string;

                    /**
                     * Creates a new SystemWorkflowFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SystemWorkflowFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.ISystemWorkflowFailure): temporal.api.errordetails.v1.SystemWorkflowFailure;

                    /**
                     * Encodes the specified SystemWorkflowFailure message. Does not implicitly {@link temporal.api.errordetails.v1.SystemWorkflowFailure.verify|verify} messages.
                     * @param message SystemWorkflowFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.ISystemWorkflowFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SystemWorkflowFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.SystemWorkflowFailure.verify|verify} messages.
                     * @param message SystemWorkflowFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.ISystemWorkflowFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SystemWorkflowFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SystemWorkflowFailure
                     * @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): temporal.api.errordetails.v1.SystemWorkflowFailure;

                    /**
                     * Decodes a SystemWorkflowFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SystemWorkflowFailure
                     * @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)): temporal.api.errordetails.v1.SystemWorkflowFailure;

                    /**
                     * Creates a SystemWorkflowFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SystemWorkflowFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.SystemWorkflowFailure;

                    /**
                     * Creates a plain object from a SystemWorkflowFailure message. Also converts values to other types if specified.
                     * @param message SystemWorkflowFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.SystemWorkflowFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SystemWorkflowFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SystemWorkflowFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a WorkflowNotReadyFailure. */
                interface IWorkflowNotReadyFailure {
                }

                /** Represents a WorkflowNotReadyFailure. */
                class WorkflowNotReadyFailure implements IWorkflowNotReadyFailure {

                    /**
                     * Constructs a new WorkflowNotReadyFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.IWorkflowNotReadyFailure);

                    /**
                     * Creates a new WorkflowNotReadyFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WorkflowNotReadyFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.IWorkflowNotReadyFailure): temporal.api.errordetails.v1.WorkflowNotReadyFailure;

                    /**
                     * Encodes the specified WorkflowNotReadyFailure message. Does not implicitly {@link temporal.api.errordetails.v1.WorkflowNotReadyFailure.verify|verify} messages.
                     * @param message WorkflowNotReadyFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.IWorkflowNotReadyFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WorkflowNotReadyFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.WorkflowNotReadyFailure.verify|verify} messages.
                     * @param message WorkflowNotReadyFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.IWorkflowNotReadyFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WorkflowNotReadyFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WorkflowNotReadyFailure
                     * @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): temporal.api.errordetails.v1.WorkflowNotReadyFailure;

                    /**
                     * Decodes a WorkflowNotReadyFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WorkflowNotReadyFailure
                     * @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)): temporal.api.errordetails.v1.WorkflowNotReadyFailure;

                    /**
                     * Creates a WorkflowNotReadyFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WorkflowNotReadyFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.WorkflowNotReadyFailure;

                    /**
                     * Creates a plain object from a WorkflowNotReadyFailure message. Also converts values to other types if specified.
                     * @param message WorkflowNotReadyFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.WorkflowNotReadyFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WorkflowNotReadyFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WorkflowNotReadyFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a NewerBuildExistsFailure. */
                interface INewerBuildExistsFailure {

                    /** The current default compatible build ID which will receive tasks */
                    defaultBuildId?: (string|null);
                }

                /** Represents a NewerBuildExistsFailure. */
                class NewerBuildExistsFailure implements INewerBuildExistsFailure {

                    /**
                     * Constructs a new NewerBuildExistsFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.INewerBuildExistsFailure);

                    /** The current default compatible build ID which will receive tasks */
                    public defaultBuildId: string;

                    /**
                     * Creates a new NewerBuildExistsFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns NewerBuildExistsFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.INewerBuildExistsFailure): temporal.api.errordetails.v1.NewerBuildExistsFailure;

                    /**
                     * Encodes the specified NewerBuildExistsFailure message. Does not implicitly {@link temporal.api.errordetails.v1.NewerBuildExistsFailure.verify|verify} messages.
                     * @param message NewerBuildExistsFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.INewerBuildExistsFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified NewerBuildExistsFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.NewerBuildExistsFailure.verify|verify} messages.
                     * @param message NewerBuildExistsFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.INewerBuildExistsFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a NewerBuildExistsFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns NewerBuildExistsFailure
                     * @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): temporal.api.errordetails.v1.NewerBuildExistsFailure;

                    /**
                     * Decodes a NewerBuildExistsFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns NewerBuildExistsFailure
                     * @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)): temporal.api.errordetails.v1.NewerBuildExistsFailure;

                    /**
                     * Creates a NewerBuildExistsFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns NewerBuildExistsFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.NewerBuildExistsFailure;

                    /**
                     * Creates a plain object from a NewerBuildExistsFailure message. Also converts values to other types if specified.
                     * @param message NewerBuildExistsFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.NewerBuildExistsFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this NewerBuildExistsFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for NewerBuildExistsFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MultiOperationExecutionFailure. */
                interface IMultiOperationExecutionFailure {

                    /**
                     * One status for each requested operation from the failed MultiOperation. The failed
                     * operation(s) have the same error details as if it was executed separately. All other operations have the
                     * status code `Aborted` and `MultiOperationExecutionAborted` is added to the details field.
                     */
                    statuses?: (temporal.api.errordetails.v1.MultiOperationExecutionFailure.IOperationStatus[]|null);
                }

                /** Represents a MultiOperationExecutionFailure. */
                class MultiOperationExecutionFailure implements IMultiOperationExecutionFailure {

                    /**
                     * Constructs a new MultiOperationExecutionFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.IMultiOperationExecutionFailure);

                    /**
                     * One status for each requested operation from the failed MultiOperation. The failed
                     * operation(s) have the same error details as if it was executed separately. All other operations have the
                     * status code `Aborted` and `MultiOperationExecutionAborted` is added to the details field.
                     */
                    public statuses: temporal.api.errordetails.v1.MultiOperationExecutionFailure.IOperationStatus[];

                    /**
                     * Creates a new MultiOperationExecutionFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MultiOperationExecutionFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.IMultiOperationExecutionFailure): temporal.api.errordetails.v1.MultiOperationExecutionFailure;

                    /**
                     * Encodes the specified MultiOperationExecutionFailure message. Does not implicitly {@link temporal.api.errordetails.v1.MultiOperationExecutionFailure.verify|verify} messages.
                     * @param message MultiOperationExecutionFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.IMultiOperationExecutionFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MultiOperationExecutionFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.MultiOperationExecutionFailure.verify|verify} messages.
                     * @param message MultiOperationExecutionFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.IMultiOperationExecutionFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MultiOperationExecutionFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MultiOperationExecutionFailure
                     * @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): temporal.api.errordetails.v1.MultiOperationExecutionFailure;

                    /**
                     * Decodes a MultiOperationExecutionFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MultiOperationExecutionFailure
                     * @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)): temporal.api.errordetails.v1.MultiOperationExecutionFailure;

                    /**
                     * Creates a MultiOperationExecutionFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MultiOperationExecutionFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.MultiOperationExecutionFailure;

                    /**
                     * Creates a plain object from a MultiOperationExecutionFailure message. Also converts values to other types if specified.
                     * @param message MultiOperationExecutionFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.MultiOperationExecutionFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MultiOperationExecutionFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MultiOperationExecutionFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace MultiOperationExecutionFailure {

                    /** Properties of an OperationStatus. */
                    interface IOperationStatus {

                        /** OperationStatus code */
                        code?: (number|null);

                        /** OperationStatus message */
                        message?: (string|null);

                        /** OperationStatus details */
                        details?: (google.protobuf.IAny[]|null);
                    }

                    /**
                     * NOTE: `OperationStatus` is modelled after
                     * [`google.rpc.Status`](https://github.com/googleapis/googleapis/blob/master/google/rpc/status.proto).
                     *
                     * (-- api-linter: core::0146::any=disabled
                     * aip.dev/not-precedent: details are meant to hold arbitrary payloads. --)
                     */
                    class OperationStatus implements IOperationStatus {

                        /**
                         * Constructs a new OperationStatus.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: temporal.api.errordetails.v1.MultiOperationExecutionFailure.IOperationStatus);

                        /** OperationStatus code. */
                        public code: number;

                        /** OperationStatus message. */
                        public message: string;

                        /** OperationStatus details. */
                        public details: google.protobuf.IAny[];

                        /**
                         * Creates a new OperationStatus instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OperationStatus instance
                         */
                        public static create(properties?: temporal.api.errordetails.v1.MultiOperationExecutionFailure.IOperationStatus): temporal.api.errordetails.v1.MultiOperationExecutionFailure.OperationStatus;

                        /**
                         * Encodes the specified OperationStatus message. Does not implicitly {@link temporal.api.errordetails.v1.MultiOperationExecutionFailure.OperationStatus.verify|verify} messages.
                         * @param message OperationStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: temporal.api.errordetails.v1.MultiOperationExecutionFailure.IOperationStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OperationStatus message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.MultiOperationExecutionFailure.OperationStatus.verify|verify} messages.
                         * @param message OperationStatus message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: temporal.api.errordetails.v1.MultiOperationExecutionFailure.IOperationStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OperationStatus message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OperationStatus
                         * @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): temporal.api.errordetails.v1.MultiOperationExecutionFailure.OperationStatus;

                        /**
                         * Decodes an OperationStatus message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OperationStatus
                         * @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)): temporal.api.errordetails.v1.MultiOperationExecutionFailure.OperationStatus;

                        /**
                         * Creates an OperationStatus message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OperationStatus
                         */
                        public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.MultiOperationExecutionFailure.OperationStatus;

                        /**
                         * Creates a plain object from an OperationStatus message. Also converts values to other types if specified.
                         * @param message OperationStatus
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: temporal.api.errordetails.v1.MultiOperationExecutionFailure.OperationStatus, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OperationStatus to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OperationStatus
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an ActivityExecutionAlreadyStartedFailure. */
                interface IActivityExecutionAlreadyStartedFailure {

                    /** ActivityExecutionAlreadyStartedFailure startRequestId */
                    startRequestId?: (string|null);

                    /** ActivityExecutionAlreadyStartedFailure runId */
                    runId?: (string|null);
                }

                /**
                 * An error indicating that an activity execution failed to start. Returned when there is an existing activity with the
                 * given activity ID, and the given ID reuse and conflict policies do not permit starting a new one or attaching to an
                 * existing one.
                 */
                class ActivityExecutionAlreadyStartedFailure implements IActivityExecutionAlreadyStartedFailure {

                    /**
                     * Constructs a new ActivityExecutionAlreadyStartedFailure.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.errordetails.v1.IActivityExecutionAlreadyStartedFailure);

                    /** ActivityExecutionAlreadyStartedFailure startRequestId. */
                    public startRequestId: string;

                    /** ActivityExecutionAlreadyStartedFailure runId. */
                    public runId: string;

                    /**
                     * Creates a new ActivityExecutionAlreadyStartedFailure instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ActivityExecutionAlreadyStartedFailure instance
                     */
                    public static create(properties?: temporal.api.errordetails.v1.IActivityExecutionAlreadyStartedFailure): temporal.api.errordetails.v1.ActivityExecutionAlreadyStartedFailure;

                    /**
                     * Encodes the specified ActivityExecutionAlreadyStartedFailure message. Does not implicitly {@link temporal.api.errordetails.v1.ActivityExecutionAlreadyStartedFailure.verify|verify} messages.
                     * @param message ActivityExecutionAlreadyStartedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.errordetails.v1.IActivityExecutionAlreadyStartedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ActivityExecutionAlreadyStartedFailure message, length delimited. Does not implicitly {@link temporal.api.errordetails.v1.ActivityExecutionAlreadyStartedFailure.verify|verify} messages.
                     * @param message ActivityExecutionAlreadyStartedFailure message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.errordetails.v1.IActivityExecutionAlreadyStartedFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ActivityExecutionAlreadyStartedFailure message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ActivityExecutionAlreadyStartedFailure
                     * @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): temporal.api.errordetails.v1.ActivityExecutionAlreadyStartedFailure;

                    /**
                     * Decodes an ActivityExecutionAlreadyStartedFailure message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ActivityExecutionAlreadyStartedFailure
                     * @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)): temporal.api.errordetails.v1.ActivityExecutionAlreadyStartedFailure;

                    /**
                     * Creates an ActivityExecutionAlreadyStartedFailure message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ActivityExecutionAlreadyStartedFailure
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.errordetails.v1.ActivityExecutionAlreadyStartedFailure;

                    /**
                     * Creates a plain object from an ActivityExecutionAlreadyStartedFailure message. Also converts values to other types if specified.
                     * @param message ActivityExecutionAlreadyStartedFailure
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.errordetails.v1.ActivityExecutionAlreadyStartedFailure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ActivityExecutionAlreadyStartedFailure to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ActivityExecutionAlreadyStartedFailure
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace testservice. */
        namespace testservice {

            /** Namespace v1. */
            namespace v1 {

                /** Properties of a LockTimeSkippingRequest. */
                interface ILockTimeSkippingRequest {
                }

                /** Represents a LockTimeSkippingRequest. */
                class LockTimeSkippingRequest implements ILockTimeSkippingRequest {

                    /**
                     * Constructs a new LockTimeSkippingRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.testservice.v1.ILockTimeSkippingRequest);

                    /**
                     * Creates a new LockTimeSkippingRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns LockTimeSkippingRequest instance
                     */
                    public static create(properties?: temporal.api.testservice.v1.ILockTimeSkippingRequest): temporal.api.testservice.v1.LockTimeSkippingRequest;

                    /**
                     * Encodes the specified LockTimeSkippingRequest message. Does not implicitly {@link temporal.api.testservice.v1.LockTimeSkippingRequest.verify|verify} messages.
                     * @param message LockTimeSkippingRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.testservice.v1.ILockTimeSkippingRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified LockTimeSkippingRequest message, length delimited. Does not implicitly {@link temporal.api.testservice.v1.LockTimeSkippingRequest.verify|verify} messages.
                     * @param message LockTimeSkippingRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.testservice.v1.ILockTimeSkippingRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a LockTimeSkippingRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns LockTimeSkippingRequest
                     * @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): temporal.api.testservice.v1.LockTimeSkippingRequest;

                    /**
                     * Decodes a LockTimeSkippingRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns LockTimeSkippingRequest
                     * @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)): temporal.api.testservice.v1.LockTimeSkippingRequest;

                    /**
                     * Creates a LockTimeSkippingRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns LockTimeSkippingRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.testservice.v1.LockTimeSkippingRequest;

                    /**
                     * Creates a plain object from a LockTimeSkippingRequest message. Also converts values to other types if specified.
                     * @param message LockTimeSkippingRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.testservice.v1.LockTimeSkippingRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this LockTimeSkippingRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for LockTimeSkippingRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a LockTimeSkippingResponse. */
                interface ILockTimeSkippingResponse {
                }

                /** Represents a LockTimeSkippingResponse. */
                class LockTimeSkippingResponse implements ILockTimeSkippingResponse {

                    /**
                     * Constructs a new LockTimeSkippingResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.testservice.v1.ILockTimeSkippingResponse);

                    /**
                     * Creates a new LockTimeSkippingResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns LockTimeSkippingResponse instance
                     */
                    public static create(properties?: temporal.api.testservice.v1.ILockTimeSkippingResponse): temporal.api.testservice.v1.LockTimeSkippingResponse;

                    /**
                     * Encodes the specified LockTimeSkippingResponse message. Does not implicitly {@link temporal.api.testservice.v1.LockTimeSkippingResponse.verify|verify} messages.
                     * @param message LockTimeSkippingResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.testservice.v1.ILockTimeSkippingResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified LockTimeSkippingResponse message, length delimited. Does not implicitly {@link temporal.api.testservice.v1.LockTimeSkippingResponse.verify|verify} messages.
                     * @param message LockTimeSkippingResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.testservice.v1.ILockTimeSkippingResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a LockTimeSkippingResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns LockTimeSkippingResponse
                     * @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): temporal.api.testservice.v1.LockTimeSkippingResponse;

                    /**
                     * Decodes a LockTimeSkippingResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns LockTimeSkippingResponse
                     * @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)): temporal.api.testservice.v1.LockTimeSkippingResponse;

                    /**
                     * Creates a LockTimeSkippingResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns LockTimeSkippingResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.testservice.v1.LockTimeSkippingResponse;

                    /**
                     * Creates a plain object from a LockTimeSkippingResponse message. Also converts values to other types if specified.
                     * @param message LockTimeSkippingResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.testservice.v1.LockTimeSkippingResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this LockTimeSkippingResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for LockTimeSkippingResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UnlockTimeSkippingRequest. */
                interface IUnlockTimeSkippingRequest {
                }

                /** Represents an UnlockTimeSkippingRequest. */
                class UnlockTimeSkippingRequest implements IUnlockTimeSkippingRequest {

                    /**
                     * Constructs a new UnlockTimeSkippingRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.testservice.v1.IUnlockTimeSkippingRequest);

                    /**
                     * Creates a new UnlockTimeSkippingRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UnlockTimeSkippingRequest instance
                     */
                    public static create(properties?: temporal.api.testservice.v1.IUnlockTimeSkippingRequest): temporal.api.testservice.v1.UnlockTimeSkippingRequest;

                    /**
                     * Encodes the specified UnlockTimeSkippingRequest message. Does not implicitly {@link temporal.api.testservice.v1.UnlockTimeSkippingRequest.verify|verify} messages.
                     * @param message UnlockTimeSkippingRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.testservice.v1.IUnlockTimeSkippingRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UnlockTimeSkippingRequest message, length delimited. Does not implicitly {@link temporal.api.testservice.v1.UnlockTimeSkippingRequest.verify|verify} messages.
                     * @param message UnlockTimeSkippingRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.testservice.v1.IUnlockTimeSkippingRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UnlockTimeSkippingRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UnlockTimeSkippingRequest
                     * @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): temporal.api.testservice.v1.UnlockTimeSkippingRequest;

                    /**
                     * Decodes an UnlockTimeSkippingRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UnlockTimeSkippingRequest
                     * @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)): temporal.api.testservice.v1.UnlockTimeSkippingRequest;

                    /**
                     * Creates an UnlockTimeSkippingRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UnlockTimeSkippingRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.testservice.v1.UnlockTimeSkippingRequest;

                    /**
                     * Creates a plain object from an UnlockTimeSkippingRequest message. Also converts values to other types if specified.
                     * @param message UnlockTimeSkippingRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.testservice.v1.UnlockTimeSkippingRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UnlockTimeSkippingRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UnlockTimeSkippingRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UnlockTimeSkippingResponse. */
                interface IUnlockTimeSkippingResponse {
                }

                /** Represents an UnlockTimeSkippingResponse. */
                class UnlockTimeSkippingResponse implements IUnlockTimeSkippingResponse {

                    /**
                     * Constructs a new UnlockTimeSkippingResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.testservice.v1.IUnlockTimeSkippingResponse);

                    /**
                     * Creates a new UnlockTimeSkippingResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UnlockTimeSkippingResponse instance
                     */
                    public static create(properties?: temporal.api.testservice.v1.IUnlockTimeSkippingResponse): temporal.api.testservice.v1.UnlockTimeSkippingResponse;

                    /**
                     * Encodes the specified UnlockTimeSkippingResponse message. Does not implicitly {@link temporal.api.testservice.v1.UnlockTimeSkippingResponse.verify|verify} messages.
                     * @param message UnlockTimeSkippingResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.testservice.v1.IUnlockTimeSkippingResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UnlockTimeSkippingResponse message, length delimited. Does not implicitly {@link temporal.api.testservice.v1.UnlockTimeSkippingResponse.verify|verify} messages.
                     * @param message UnlockTimeSkippingResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.testservice.v1.IUnlockTimeSkippingResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UnlockTimeSkippingResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UnlockTimeSkippingResponse
                     * @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): temporal.api.testservice.v1.UnlockTimeSkippingResponse;

                    /**
                     * Decodes an UnlockTimeSkippingResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UnlockTimeSkippingResponse
                     * @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)): temporal.api.testservice.v1.UnlockTimeSkippingResponse;

                    /**
                     * Creates an UnlockTimeSkippingResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UnlockTimeSkippingResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.testservice.v1.UnlockTimeSkippingResponse;

                    /**
                     * Creates a plain object from an UnlockTimeSkippingResponse message. Also converts values to other types if specified.
                     * @param message UnlockTimeSkippingResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.testservice.v1.UnlockTimeSkippingResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UnlockTimeSkippingResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UnlockTimeSkippingResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SleepUntilRequest. */
                interface ISleepUntilRequest {

                    /** SleepUntilRequest timestamp */
                    timestamp?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a SleepUntilRequest. */
                class SleepUntilRequest implements ISleepUntilRequest {

                    /**
                     * Constructs a new SleepUntilRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.testservice.v1.ISleepUntilRequest);

                    /** SleepUntilRequest timestamp. */
                    public timestamp?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new SleepUntilRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SleepUntilRequest instance
                     */
                    public static create(properties?: temporal.api.testservice.v1.ISleepUntilRequest): temporal.api.testservice.v1.SleepUntilRequest;

                    /**
                     * Encodes the specified SleepUntilRequest message. Does not implicitly {@link temporal.api.testservice.v1.SleepUntilRequest.verify|verify} messages.
                     * @param message SleepUntilRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.testservice.v1.ISleepUntilRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SleepUntilRequest message, length delimited. Does not implicitly {@link temporal.api.testservice.v1.SleepUntilRequest.verify|verify} messages.
                     * @param message SleepUntilRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.testservice.v1.ISleepUntilRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SleepUntilRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SleepUntilRequest
                     * @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): temporal.api.testservice.v1.SleepUntilRequest;

                    /**
                     * Decodes a SleepUntilRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SleepUntilRequest
                     * @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)): temporal.api.testservice.v1.SleepUntilRequest;

                    /**
                     * Creates a SleepUntilRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SleepUntilRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.testservice.v1.SleepUntilRequest;

                    /**
                     * Creates a plain object from a SleepUntilRequest message. Also converts values to other types if specified.
                     * @param message SleepUntilRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.testservice.v1.SleepUntilRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SleepUntilRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SleepUntilRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SleepRequest. */
                interface ISleepRequest {

                    /** SleepRequest duration */
                    duration?: (google.protobuf.IDuration|null);
                }

                /** Represents a SleepRequest. */
                class SleepRequest implements ISleepRequest {

                    /**
                     * Constructs a new SleepRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.testservice.v1.ISleepRequest);

                    /** SleepRequest duration. */
                    public duration?: (google.protobuf.IDuration|null);

                    /**
                     * Creates a new SleepRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SleepRequest instance
                     */
                    public static create(properties?: temporal.api.testservice.v1.ISleepRequest): temporal.api.testservice.v1.SleepRequest;

                    /**
                     * Encodes the specified SleepRequest message. Does not implicitly {@link temporal.api.testservice.v1.SleepRequest.verify|verify} messages.
                     * @param message SleepRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.testservice.v1.ISleepRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SleepRequest message, length delimited. Does not implicitly {@link temporal.api.testservice.v1.SleepRequest.verify|verify} messages.
                     * @param message SleepRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.testservice.v1.ISleepRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SleepRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SleepRequest
                     * @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): temporal.api.testservice.v1.SleepRequest;

                    /**
                     * Decodes a SleepRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SleepRequest
                     * @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)): temporal.api.testservice.v1.SleepRequest;

                    /**
                     * Creates a SleepRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SleepRequest
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.testservice.v1.SleepRequest;

                    /**
                     * Creates a plain object from a SleepRequest message. Also converts values to other types if specified.
                     * @param message SleepRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.testservice.v1.SleepRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SleepRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SleepRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SleepResponse. */
                interface ISleepResponse {
                }

                /** Represents a SleepResponse. */
                class SleepResponse implements ISleepResponse {

                    /**
                     * Constructs a new SleepResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.testservice.v1.ISleepResponse);

                    /**
                     * Creates a new SleepResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SleepResponse instance
                     */
                    public static create(properties?: temporal.api.testservice.v1.ISleepResponse): temporal.api.testservice.v1.SleepResponse;

                    /**
                     * Encodes the specified SleepResponse message. Does not implicitly {@link temporal.api.testservice.v1.SleepResponse.verify|verify} messages.
                     * @param message SleepResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.testservice.v1.ISleepResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SleepResponse message, length delimited. Does not implicitly {@link temporal.api.testservice.v1.SleepResponse.verify|verify} messages.
                     * @param message SleepResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.testservice.v1.ISleepResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SleepResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SleepResponse
                     * @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): temporal.api.testservice.v1.SleepResponse;

                    /**
                     * Decodes a SleepResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SleepResponse
                     * @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)): temporal.api.testservice.v1.SleepResponse;

                    /**
                     * Creates a SleepResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SleepResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.testservice.v1.SleepResponse;

                    /**
                     * Creates a plain object from a SleepResponse message. Also converts values to other types if specified.
                     * @param message SleepResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.testservice.v1.SleepResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SleepResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SleepResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetCurrentTimeResponse. */
                interface IGetCurrentTimeResponse {

                    /** GetCurrentTimeResponse time */
                    time?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a GetCurrentTimeResponse. */
                class GetCurrentTimeResponse implements IGetCurrentTimeResponse {

                    /**
                     * Constructs a new GetCurrentTimeResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: temporal.api.testservice.v1.IGetCurrentTimeResponse);

                    /** GetCurrentTimeResponse time. */
                    public time?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new GetCurrentTimeResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetCurrentTimeResponse instance
                     */
                    public static create(properties?: temporal.api.testservice.v1.IGetCurrentTimeResponse): temporal.api.testservice.v1.GetCurrentTimeResponse;

                    /**
                     * Encodes the specified GetCurrentTimeResponse message. Does not implicitly {@link temporal.api.testservice.v1.GetCurrentTimeResponse.verify|verify} messages.
                     * @param message GetCurrentTimeResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: temporal.api.testservice.v1.IGetCurrentTimeResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetCurrentTimeResponse message, length delimited. Does not implicitly {@link temporal.api.testservice.v1.GetCurrentTimeResponse.verify|verify} messages.
                     * @param message GetCurrentTimeResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: temporal.api.testservice.v1.IGetCurrentTimeResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetCurrentTimeResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetCurrentTimeResponse
                     * @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): temporal.api.testservice.v1.GetCurrentTimeResponse;

                    /**
                     * Decodes a GetCurrentTimeResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetCurrentTimeResponse
                     * @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)): temporal.api.testservice.v1.GetCurrentTimeResponse;

                    /**
                     * Creates a GetCurrentTimeResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetCurrentTimeResponse
                     */
                    public static fromObject(object: { [k: string]: any }): temporal.api.testservice.v1.GetCurrentTimeResponse;

                    /**
                     * Creates a plain object from a GetCurrentTimeResponse message. Also converts values to other types if specified.
                     * @param message GetCurrentTimeResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: temporal.api.testservice.v1.GetCurrentTimeResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetCurrentTimeResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetCurrentTimeResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /**
                 * TestService API defines an interface supported only by the Temporal Test Server.
                 * It provides functionality needed or supported for testing purposes only.
                 *
                 * This is an EXPERIMENTAL API.
                 */
                class TestService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new TestService 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 TestService 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): TestService;

                    /**
                     * LockTimeSkipping increments Time Locking Counter by one.
                     *
                     * If Time Locking Counter is positive, time skipping is locked (disabled).
                     * When time skipping is disabled, the time in test server is moving normally, with a real time pace.
                     * Test Server is typically started with locked time skipping and Time Locking Counter = 1.
                     *
                     * LockTimeSkipping and UnlockTimeSkipping calls are counted.
                     * @param request LockTimeSkippingRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and LockTimeSkippingResponse
                     */
                    public lockTimeSkipping(request: temporal.api.testservice.v1.ILockTimeSkippingRequest, callback: temporal.api.testservice.v1.TestService.LockTimeSkippingCallback): void;

                    /**
                     * LockTimeSkipping increments Time Locking Counter by one.
                     *
                     * If Time Locking Counter is positive, time skipping is locked (disabled).
                     * When time skipping is disabled, the time in test server is moving normally, with a real time pace.
                     * Test Server is typically started with locked time skipping and Time Locking Counter = 1.
                     *
                     * LockTimeSkipping and UnlockTimeSkipping calls are counted.
                     * @param request LockTimeSkippingRequest message or plain object
                     * @returns Promise
                     */
                    public lockTimeSkipping(request: temporal.api.testservice.v1.ILockTimeSkippingRequest): Promise<temporal.api.testservice.v1.LockTimeSkippingResponse>;

                    /**
                     * UnlockTimeSkipping decrements Time Locking Counter by one.
                     *
                     * If the counter reaches 0, it unlocks time skipping and fast forwards time.
                     * LockTimeSkipping and UnlockTimeSkipping calls are counted. Calling UnlockTimeSkipping does not
                     * guarantee that time is going to be fast forwarded as another lock can be holding it.
                     *
                     * Time Locking Counter can't be negative, unbalanced calls to UnlockTimeSkipping will lead to rpc call failure
                     * @param request UnlockTimeSkippingRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UnlockTimeSkippingResponse
                     */
                    public unlockTimeSkipping(request: temporal.api.testservice.v1.IUnlockTimeSkippingRequest, callback: temporal.api.testservice.v1.TestService.UnlockTimeSkippingCallback): void;

                    /**
                     * UnlockTimeSkipping decrements Time Locking Counter by one.
                     *
                     * If the counter reaches 0, it unlocks time skipping and fast forwards time.
                     * LockTimeSkipping and UnlockTimeSkipping calls are counted. Calling UnlockTimeSkipping does not
                     * guarantee that time is going to be fast forwarded as another lock can be holding it.
                     *
                     * Time Locking Counter can't be negative, unbalanced calls to UnlockTimeSkipping will lead to rpc call failure
                     * @param request UnlockTimeSkippingRequest message or plain object
                     * @returns Promise
                     */
                    public unlockTimeSkipping(request: temporal.api.testservice.v1.IUnlockTimeSkippingRequest): Promise<temporal.api.testservice.v1.UnlockTimeSkippingResponse>;

                    /**
                     * This call returns only when the Test Server Time advances by the specified duration.
                     * This is an EXPERIMENTAL API.
                     * @param request SleepRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SleepResponse
                     */
                    public sleep(request: temporal.api.testservice.v1.ISleepRequest, callback: temporal.api.testservice.v1.TestService.SleepCallback): void;

                    /**
                     * This call returns only when the Test Server Time advances by the specified duration.
                     * This is an EXPERIMENTAL API.
                     * @param request SleepRequest message or plain object
                     * @returns Promise
                     */
                    public sleep(request: temporal.api.testservice.v1.ISleepRequest): Promise<temporal.api.testservice.v1.SleepResponse>;

                    /**
                     * This call returns only when the Test Server Time advances to the specified timestamp.
                     * If the current Test Server Time is beyond the specified timestamp, returns immediately.
                     * This is an EXPERIMENTAL API.
                     * @param request SleepUntilRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SleepResponse
                     */
                    public sleepUntil(request: temporal.api.testservice.v1.ISleepUntilRequest, callback: temporal.api.testservice.v1.TestService.SleepUntilCallback): void;

                    /**
                     * This call returns only when the Test Server Time advances to the specified timestamp.
                     * If the current Test Server Time is beyond the specified timestamp, returns immediately.
                     * This is an EXPERIMENTAL API.
                     * @param request SleepUntilRequest message or plain object
                     * @returns Promise
                     */
                    public sleepUntil(request: temporal.api.testservice.v1.ISleepUntilRequest): Promise<temporal.api.testservice.v1.SleepResponse>;

                    /**
                     * UnlockTimeSkippingWhileSleep decreases time locking counter by one and increases it back
                     * once the Test Server Time advances by the duration specified in the request.
                     *
                     * This call returns only when the Test Server Time advances by the specified duration.
                     *
                     * If it is called when Time Locking Counter is
                     * - more than 1 and no other unlocks are coming in, rpc call will block for the specified duration, time will not be fast forwarded.
                     * - 1, it will lead to fast forwarding of the time by the duration specified in the request and quick return of this rpc call.
                     * - 0 will lead to rpc call failure same way as an unbalanced UnlockTimeSkipping.
                     * @param request SleepRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SleepResponse
                     */
                    public unlockTimeSkippingWithSleep(request: temporal.api.testservice.v1.ISleepRequest, callback: temporal.api.testservice.v1.TestService.UnlockTimeSkippingWithSleepCallback): void;

                    /**
                     * UnlockTimeSkippingWhileSleep decreases time locking counter by one and increases it back
                     * once the Test Server Time advances by the duration specified in the request.
                     *
                     * This call returns only when the Test Server Time advances by the specified duration.
                     *
                     * If it is called when Time Locking Counter is
                     * - more than 1 and no other unlocks are coming in, rpc call will block for the specified duration, time will not be fast forwarded.
                     * - 1, it will lead to fast forwarding of the time by the duration specified in the request and quick return of this rpc call.
                     * - 0 will lead to rpc call failure same way as an unbalanced UnlockTimeSkipping.
                     * @param request SleepRequest message or plain object
                     * @returns Promise
                     */
                    public unlockTimeSkippingWithSleep(request: temporal.api.testservice.v1.ISleepRequest): Promise<temporal.api.testservice.v1.SleepResponse>;

                    /**
                     * GetCurrentTime returns the current Temporal Test Server time
                     *
                     * This time might not be equal to {@link System#currentTimeMillis()} due to time skipping.
                     * @param request Empty message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetCurrentTimeResponse
                     */
                    public getCurrentTime(request: google.protobuf.IEmpty, callback: temporal.api.testservice.v1.TestService.GetCurrentTimeCallback): void;

                    /**
                     * GetCurrentTime returns the current Temporal Test Server time
                     *
                     * This time might not be equal to {@link System#currentTimeMillis()} due to time skipping.
                     * @param request Empty message or plain object
                     * @returns Promise
                     */
                    public getCurrentTime(request: google.protobuf.IEmpty): Promise<temporal.api.testservice.v1.GetCurrentTimeResponse>;
                }

                namespace TestService {

                    /**
                     * Callback as used by {@link temporal.api.testservice.v1.TestService#lockTimeSkipping}.
                     * @param error Error, if any
                     * @param [response] LockTimeSkippingResponse
                     */
                    type LockTimeSkippingCallback = (error: (Error|null), response?: temporal.api.testservice.v1.LockTimeSkippingResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.testservice.v1.TestService#unlockTimeSkipping}.
                     * @param error Error, if any
                     * @param [response] UnlockTimeSkippingResponse
                     */
                    type UnlockTimeSkippingCallback = (error: (Error|null), response?: temporal.api.testservice.v1.UnlockTimeSkippingResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.testservice.v1.TestService#sleep}.
                     * @param error Error, if any
                     * @param [response] SleepResponse
                     */
                    type SleepCallback = (error: (Error|null), response?: temporal.api.testservice.v1.SleepResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.testservice.v1.TestService#sleepUntil}.
                     * @param error Error, if any
                     * @param [response] SleepResponse
                     */
                    type SleepUntilCallback = (error: (Error|null), response?: temporal.api.testservice.v1.SleepResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.testservice.v1.TestService#unlockTimeSkippingWithSleep}.
                     * @param error Error, if any
                     * @param [response] SleepResponse
                     */
                    type UnlockTimeSkippingWithSleepCallback = (error: (Error|null), response?: temporal.api.testservice.v1.SleepResponse) => void;

                    /**
                     * Callback as used by {@link temporal.api.testservice.v1.TestService#getCurrentTime}.
                     * @param error Error, if any
                     * @param [response] GetCurrentTimeResponse
                     */
                    type GetCurrentTimeCallback = (error: (Error|null), response?: temporal.api.testservice.v1.GetCurrentTimeResponse) => void;
                }
            }
        }
    }
}

/** Namespace google. */
export namespace google {

    /** Namespace protobuf. */
    namespace protobuf {

        /** Properties of a Duration. */
        interface IDuration {

            /** Duration seconds */
            seconds?: (Long|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: Long;

            /** 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;

            /**
             * 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 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;

            /**
             * 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?: (Long|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: Long;

            /** 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;

            /**
             * 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 DoubleValue. */
        interface IDoubleValue {

            /** DoubleValue value */
            value?: (number|null);
        }

        /** Represents a DoubleValue. */
        class DoubleValue implements IDoubleValue {

            /**
             * Constructs a new DoubleValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IDoubleValue);

            /** DoubleValue value. */
            public value: number;

            /**
             * Creates a new DoubleValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DoubleValue instance
             */
            public static create(properties?: google.protobuf.IDoubleValue): google.protobuf.DoubleValue;

            /**
             * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages.
             * @param message DoubleValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages.
             * @param message DoubleValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DoubleValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DoubleValue
             * @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.DoubleValue;

            /**
             * Decodes a DoubleValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DoubleValue
             * @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.DoubleValue;

            /**
             * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DoubleValue
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.DoubleValue;

            /**
             * Creates a plain object from a DoubleValue message. Also converts values to other types if specified.
             * @param message DoubleValue
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.DoubleValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DoubleValue to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DoubleValue
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a FloatValue. */
        interface IFloatValue {

            /** FloatValue value */
            value?: (number|null);
        }

        /** Represents a FloatValue. */
        class FloatValue implements IFloatValue {

            /**
             * Constructs a new FloatValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFloatValue);

            /** FloatValue value. */
            public value: number;

            /**
             * Creates a new FloatValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FloatValue instance
             */
            public static create(properties?: google.protobuf.IFloatValue): google.protobuf.FloatValue;

            /**
             * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages.
             * @param message FloatValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages.
             * @param message FloatValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FloatValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FloatValue
             * @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.FloatValue;

            /**
             * Decodes a FloatValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FloatValue
             * @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.FloatValue;

            /**
             * Creates a FloatValue message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FloatValue
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.FloatValue;

            /**
             * Creates a plain object from a FloatValue message. Also converts values to other types if specified.
             * @param message FloatValue
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.FloatValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FloatValue to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FloatValue
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an Int64Value. */
        interface IInt64Value {

            /** Int64Value value */
            value?: (Long|null);
        }

        /** Represents an Int64Value. */
        class Int64Value implements IInt64Value {

            /**
             * Constructs a new Int64Value.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IInt64Value);

            /** Int64Value value. */
            public value: Long;

            /**
             * Creates a new Int64Value instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Int64Value instance
             */
            public static create(properties?: google.protobuf.IInt64Value): google.protobuf.Int64Value;

            /**
             * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages.
             * @param message Int64Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages.
             * @param message Int64Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Int64Value message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Int64Value
             * @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.Int64Value;

            /**
             * Decodes an Int64Value message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Int64Value
             * @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.Int64Value;

            /**
             * Creates an Int64Value message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Int64Value
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.Int64Value;

            /**
             * Creates a plain object from an Int64Value message. Also converts values to other types if specified.
             * @param message Int64Value
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.Int64Value, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Int64Value to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Int64Value
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a UInt64Value. */
        interface IUInt64Value {

            /** UInt64Value value */
            value?: (Long|null);
        }

        /** Represents a UInt64Value. */
        class UInt64Value implements IUInt64Value {

            /**
             * Constructs a new UInt64Value.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IUInt64Value);

            /** UInt64Value value. */
            public value: Long;

            /**
             * Creates a new UInt64Value instance using the specified properties.
             * @param [properties] Properties to set
             * @returns UInt64Value instance
             */
            public static create(properties?: google.protobuf.IUInt64Value): google.protobuf.UInt64Value;

            /**
             * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages.
             * @param message UInt64Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages.
             * @param message UInt64Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a UInt64Value message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns UInt64Value
             * @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.UInt64Value;

            /**
             * Decodes a UInt64Value message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns UInt64Value
             * @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.UInt64Value;

            /**
             * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns UInt64Value
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.UInt64Value;

            /**
             * Creates a plain object from a UInt64Value message. Also converts values to other types if specified.
             * @param message UInt64Value
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.UInt64Value, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this UInt64Value to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for UInt64Value
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an Int32Value. */
        interface IInt32Value {

            /** Int32Value value */
            value?: (number|null);
        }

        /** Represents an Int32Value. */
        class Int32Value implements IInt32Value {

            /**
             * Constructs a new Int32Value.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IInt32Value);

            /** Int32Value value. */
            public value: number;

            /**
             * Creates a new Int32Value instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Int32Value instance
             */
            public static create(properties?: google.protobuf.IInt32Value): google.protobuf.Int32Value;

            /**
             * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages.
             * @param message Int32Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages.
             * @param message Int32Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Int32Value message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Int32Value
             * @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.Int32Value;

            /**
             * Decodes an Int32Value message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Int32Value
             * @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.Int32Value;

            /**
             * Creates an Int32Value message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Int32Value
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.Int32Value;

            /**
             * Creates a plain object from an Int32Value message. Also converts values to other types if specified.
             * @param message Int32Value
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.Int32Value, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Int32Value to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Int32Value
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a UInt32Value. */
        interface IUInt32Value {

            /** UInt32Value value */
            value?: (number|null);
        }

        /** Represents a UInt32Value. */
        class UInt32Value implements IUInt32Value {

            /**
             * Constructs a new UInt32Value.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IUInt32Value);

            /** UInt32Value value. */
            public value: number;

            /**
             * Creates a new UInt32Value instance using the specified properties.
             * @param [properties] Properties to set
             * @returns UInt32Value instance
             */
            public static create(properties?: google.protobuf.IUInt32Value): google.protobuf.UInt32Value;

            /**
             * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages.
             * @param message UInt32Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages.
             * @param message UInt32Value message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a UInt32Value message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns UInt32Value
             * @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.UInt32Value;

            /**
             * Decodes a UInt32Value message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns UInt32Value
             * @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.UInt32Value;

            /**
             * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns UInt32Value
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.UInt32Value;

            /**
             * Creates a plain object from a UInt32Value message. Also converts values to other types if specified.
             * @param message UInt32Value
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.UInt32Value, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this UInt32Value to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for UInt32Value
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a BoolValue. */
        interface IBoolValue {

            /** BoolValue value */
            value?: (boolean|null);
        }

        /** Represents a BoolValue. */
        class BoolValue implements IBoolValue {

            /**
             * Constructs a new BoolValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IBoolValue);

            /** BoolValue value. */
            public value: boolean;

            /**
             * Creates a new BoolValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns BoolValue instance
             */
            public static create(properties?: google.protobuf.IBoolValue): google.protobuf.BoolValue;

            /**
             * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages.
             * @param message BoolValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages.
             * @param message BoolValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a BoolValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns BoolValue
             * @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.BoolValue;

            /**
             * Decodes a BoolValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns BoolValue
             * @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.BoolValue;

            /**
             * Creates a BoolValue message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns BoolValue
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.BoolValue;

            /**
             * Creates a plain object from a BoolValue message. Also converts values to other types if specified.
             * @param message BoolValue
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.BoolValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this BoolValue to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for BoolValue
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a StringValue. */
        interface IStringValue {

            /** StringValue value */
            value?: (string|null);
        }

        /** Represents a StringValue. */
        class StringValue implements IStringValue {

            /**
             * Constructs a new StringValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IStringValue);

            /** StringValue value. */
            public value: string;

            /**
             * Creates a new StringValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns StringValue instance
             */
            public static create(properties?: google.protobuf.IStringValue): google.protobuf.StringValue;

            /**
             * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages.
             * @param message StringValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages.
             * @param message StringValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a StringValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns StringValue
             * @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.StringValue;

            /**
             * Decodes a StringValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns StringValue
             * @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.StringValue;

            /**
             * Creates a StringValue message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns StringValue
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.StringValue;

            /**
             * Creates a plain object from a StringValue message. Also converts values to other types if specified.
             * @param message StringValue
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.StringValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this StringValue to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for StringValue
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a BytesValue. */
        interface IBytesValue {

            /** BytesValue value */
            value?: (Uint8Array|null);
        }

        /** Represents a BytesValue. */
        class BytesValue implements IBytesValue {

            /**
             * Constructs a new BytesValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IBytesValue);

            /** BytesValue value. */
            public value: Uint8Array;

            /**
             * Creates a new BytesValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns BytesValue instance
             */
            public static create(properties?: google.protobuf.IBytesValue): google.protobuf.BytesValue;

            /**
             * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages.
             * @param message BytesValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages.
             * @param message BytesValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a BytesValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns BytesValue
             * @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.BytesValue;

            /**
             * Decodes a BytesValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns BytesValue
             * @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.BytesValue;

            /**
             * Creates a BytesValue message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns BytesValue
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.BytesValue;

            /**
             * Creates a plain object from a BytesValue message. Also converts values to other types if specified.
             * @param message BytesValue
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.BytesValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this BytesValue to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for BytesValue
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a FieldMask. */
        interface IFieldMask {

            /** FieldMask paths */
            paths?: (string[]|null);
        }

        /** Represents a FieldMask. */
        class FieldMask implements IFieldMask {

            /**
             * Constructs a new FieldMask.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFieldMask);

            /** FieldMask paths. */
            public paths: string[];

            /**
             * Creates a new FieldMask instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FieldMask instance
             */
            public static create(properties?: google.protobuf.IFieldMask): google.protobuf.FieldMask;

            /**
             * Encodes the specified FieldMask message. Does not implicitly {@link google.protobuf.FieldMask.verify|verify} messages.
             * @param message FieldMask message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IFieldMask, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FieldMask message, length delimited. Does not implicitly {@link google.protobuf.FieldMask.verify|verify} messages.
             * @param message FieldMask message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IFieldMask, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FieldMask message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FieldMask
             * @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.FieldMask;

            /**
             * Decodes a FieldMask message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FieldMask
             * @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.FieldMask;

            /**
             * Creates a FieldMask message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FieldMask
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.FieldMask;

            /**
             * Creates a plain object from a FieldMask message. Also converts values to other types if specified.
             * @param message FieldMask
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.FieldMask, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FieldMask to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FieldMask
             * @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|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;

            /**
             * 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;

            /**
             * 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 a FileDescriptorSet. */
        interface IFileDescriptorSet {

            /** FileDescriptorSet file */
            file?: (google.protobuf.IFileDescriptorProto[]|null);
        }

        /**
         * The protocol compiler can output a FileDescriptorSet containing the .proto
         * files it parses.
         */
        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;

            /**
             * 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;
        }

        /** The full set of known editions. */
        enum Edition {
            EDITION_UNKNOWN = 0,
            EDITION_PROTO2 = 998,
            EDITION_PROTO3 = 999,
            EDITION_2023 = 1000,
            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
        }

        /** Properties of a FileDescriptorProto. */
        interface IFileDescriptorProto {

            /** file name, relative to root of source tree */
            name?: (string|null);

            /** e.g. "foo", "foo.bar", etc. */
            "package"?: (string|null);

            /** Names of files imported by this file. */
            dependency?: (string[]|null);

            /** Indexes of the public imported files in the dependency list above. */
            publicDependency?: (number[]|null);

            /**
             * Indexes of the weak imported files in the dependency list.
             * For Google-internal migration only. Do not use.
             */
            weakDependency?: (number[]|null);

            /** All top-level definitions in this file. */
            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);

            /**
             * This field contains optional information about the original source code.
             * You may safely remove this entire field without harming runtime
             * functionality of the descriptors -- the information is needed only by
             * development tools.
             */
            sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null);

            /**
             * The syntax of the proto file.
             * The supported values are "proto2", "proto3", and "editions".
             *
             * If `edition` is present, this value must be "editions".
             */
            syntax?: (string|null);

            /** The edition of the proto file. */
            edition?: (google.protobuf.Edition|null);
        }

        /** Describes a complete .proto file. */
        class FileDescriptorProto implements IFileDescriptorProto {

            /**
             * Constructs a new FileDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFileDescriptorProto);

            /** file name, relative to root of source tree */
            public name: string;

            /** e.g. "foo", "foo.bar", etc. */
            public package: string;

            /** Names of files imported by this file. */
            public dependency: string[];

            /** Indexes of the public imported files in the dependency list above. */
            public publicDependency: number[];

            /**
             * Indexes of the weak imported files in the dependency list.
             * For Google-internal migration only. Do not use.
             */
            public weakDependency: number[];

            /** All top-level definitions in this file. */
            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);

            /**
             * This field contains optional information about the original source code.
             * You may safely remove this entire field without harming runtime
             * functionality of the descriptors -- the information is needed only by
             * development tools.
             */
            public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null);

            /**
             * The syntax of the proto file.
             * The supported values are "proto2", "proto3", and "editions".
             *
             * If `edition` is present, this value must be "editions".
             */
            public syntax: string;

            /** The edition of the proto file. */
            public edition: 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;

            /**
             * 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);

            /**
             * Reserved field names, which may not be used by fields in the same message.
             * A given name may only be reserved once.
             */
            reservedName?: (string[]|null);
        }

        /** Describes a message type. */
        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[];

            /**
             * Reserved field names, which may not be used by fields in the same message.
             * A given name may only be reserved once.
             */
            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;

            /**
             * 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 {

                /** Inclusive. */
                start?: (number|null);

                /** Exclusive. */
                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);

                /** Inclusive. */
                public start: number;

                /** Exclusive. */
                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;

                /**
                 * 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 {

                /** Inclusive. */
                start?: (number|null);

                /** Exclusive. */
                end?: (number|null);
            }

            /**
             * Range of reserved tag numbers. Reserved tag numbers may not be used by
             * fields or extension ranges in the same message. Reserved ranges may
             * not overlap.
             */
            class ReservedRange implements IReservedRange {

                /**
                 * Constructs a new ReservedRange.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.DescriptorProto.IReservedRange);

                /** Inclusive. */
                public start: number;

                /** Exclusive. */
                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;

                /**
                 * 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 {

            /** The parser stores options it doesn't recognize here. See above. */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /**
             * For external users: DO NOT USE. We are in the process of open sourcing
             * extension declaration and executing internal cleanups before it can be
             * used externally.
             */
            declaration?: (google.protobuf.ExtensionRangeOptions.IDeclaration[]|null);

            /** Any features defined in the specific edition. */
            features?: (google.protobuf.IFeatureSet|null);

            /**
             * The verification state of the range.
             * TODO: flip the default to DECLARATION once all empty ranges
             * are marked as UNVERIFIED.
             */
            verification?: (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);

            /** The parser stores options it doesn't recognize here. See above. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * For external users: DO NOT USE. We are in the process of open sourcing
             * extension declaration and executing internal cleanups before it can be
             * used externally.
             */
            public declaration: google.protobuf.ExtensionRangeOptions.IDeclaration[];

            /** Any features defined in the specific edition. */
            public features?: (google.protobuf.IFeatureSet|null);

            /**
             * The verification state of the range.
             * TODO: flip the default to DECLARATION once all empty ranges
             * are marked as UNVERIFIED.
             */
            public verification: 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;

            /**
             * 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 {

                /** The extension number declared within the extension range. */
                number?: (number|null);

                /**
                 * The fully-qualified name of the extension field. There must be a leading
                 * dot in front of the full name.
                 */
                fullName?: (string|null);

                /**
                 * The fully-qualified type name of the extension field. Unlike
                 * Metadata.type, Declaration.type must have a leading dot for messages
                 * and enums.
                 */
                type?: (string|null);

                /**
                 * If true, indicates that the number is reserved in the extension range,
                 * and any extension field with the number will fail to compile. Set this
                 * when a declared extension field is deleted.
                 */
                reserved?: (boolean|null);

                /**
                 * If true, indicates that the extension must be defined as repeated.
                 * Otherwise the extension must be defined as optional.
                 */
                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);

                /** The extension number declared within the extension range. */
                public number: number;

                /**
                 * The fully-qualified name of the extension field. There must be a leading
                 * dot in front of the full name.
                 */
                public fullName: string;

                /**
                 * The fully-qualified type name of the extension field. Unlike
                 * Metadata.type, Declaration.type must have a leading dot for messages
                 * and enums.
                 */
                public type: string;

                /**
                 * If true, indicates that the number is reserved in the extension range,
                 * and any extension field with the number will fail to compile. Set this
                 * when a declared extension field is deleted.
                 */
                public reserved: boolean;

                /**
                 * If true, indicates that the extension must be defined as repeated.
                 * Otherwise the extension must be defined as optional.
                 */
                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;

                /**
                 * 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;
            }

            /** The verification state of the extension range. */
            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|null);

            /**
             * If type_name is set, this need not be set.  If both this and type_name
             * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
             */
            type?: (google.protobuf.FieldDescriptorProto.Type|null);

            /**
             * For message and enum types, this is the name of the type.  If the name
             * starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
             * rules are used to find the type (i.e. first the nested types within this
             * message are searched, then within the parent, on up to the root
             * namespace).
             */
            typeName?: (string|null);

            /**
             * For extensions, this is the name of the type being extended.  It is
             * resolved in the same manner as type_name.
             */
            extendee?: (string|null);

            /**
             * For numeric types, contains the original text representation of the value.
             * For booleans, "true" or "false".
             * For strings, contains the default text contents (not escaped in any way).
             * For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
             */
            defaultValue?: (string|null);

            /**
             * If set, gives the index of a oneof in the containing type's oneof_decl
             * list.  This field is a member of that oneof.
             */
            oneofIndex?: (number|null);

            /**
             * JSON name of this field. The value is set by protocol compiler. If the
             * user has set a "json_name" option on this field, that option's value
             * will be used. Otherwise, it's deduced from the field's name by converting
             * it to camelCase.
             */
            jsonName?: (string|null);

            /** FieldDescriptorProto options */
            options?: (google.protobuf.IFieldOptions|null);

            /**
             * If true, this is a proto3 "optional". When a proto3 field is optional, it
             * tracks presence regardless of field type.
             *
             * When proto3_optional is true, this field must be belong to a oneof to
             * signal to old proto3 clients that presence is tracked for this field. This
             * oneof is known as a "synthetic" oneof, and this field must be its sole
             * member (each proto3 optional field gets its own synthetic oneof). Synthetic
             * oneofs exist in the descriptor only, and do not generate any API. Synthetic
             * oneofs must be ordered after all "real" oneofs.
             *
             * For message fields, proto3_optional doesn't create any semantic change,
             * since non-repeated message fields always track presence. However it still
             * indicates the semantic detail of whether the user wrote "optional" or not.
             * This can be useful for round-tripping the .proto file. For consistency we
             * give message fields a synthetic oneof also, even though it is not required
             * to track presence. This is especially important because the parser can't
             * tell if a field is a message or an enum, so it must always create a
             * synthetic oneof.
             *
             * Proto2 optional fields do not set this flag, because they already indicate
             * optional with `LABEL_OPTIONAL`.
             */
            proto3Optional?: (boolean|null);
        }

        /** Describes a field within a message. */
        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;

            /**
             * If type_name is set, this need not be set.  If both this and type_name
             * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
             */
            public type: google.protobuf.FieldDescriptorProto.Type;

            /**
             * For message and enum types, this is the name of the type.  If the name
             * starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
             * rules are used to find the type (i.e. first the nested types within this
             * message are searched, then within the parent, on up to the root
             * namespace).
             */
            public typeName: string;

            /**
             * For extensions, this is the name of the type being extended.  It is
             * resolved in the same manner as type_name.
             */
            public extendee: string;

            /**
             * For numeric types, contains the original text representation of the value.
             * For booleans, "true" or "false".
             * For strings, contains the default text contents (not escaped in any way).
             * For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
             */
            public defaultValue: string;

            /**
             * If set, gives the index of a oneof in the containing type's oneof_decl
             * list.  This field is a member of that oneof.
             */
            public oneofIndex: number;

            /**
             * JSON name of this field. The value is set by protocol compiler. If the
             * user has set a "json_name" option on this field, that option's value
             * will be used. Otherwise, it's deduced from the field's name by converting
             * it to camelCase.
             */
            public jsonName: string;

            /** FieldDescriptorProto options. */
            public options?: (google.protobuf.IFieldOptions|null);

            /**
             * If true, this is a proto3 "optional". When a proto3 field is optional, it
             * tracks presence regardless of field type.
             *
             * When proto3_optional is true, this field must be belong to a oneof to
             * signal to old proto3 clients that presence is tracked for this field. This
             * oneof is known as a "synthetic" oneof, and this field must be its sole
             * member (each proto3 optional field gets its own synthetic oneof). Synthetic
             * oneofs exist in the descriptor only, and do not generate any API. Synthetic
             * oneofs must be ordered after all "real" oneofs.
             *
             * For message fields, proto3_optional doesn't create any semantic change,
             * since non-repeated message fields always track presence. However it still
             * indicates the semantic detail of whether the user wrote "optional" or not.
             * This can be useful for round-tripping the .proto file. For consistency we
             * give message fields a synthetic oneof also, even though it is not required
             * to track presence. This is especially important because the parser can't
             * tell if a field is a message or an enum, so it must always create a
             * synthetic oneof.
             *
             * Proto2 optional fields do not set this flag, because they already indicate
             * optional with `LABEL_OPTIONAL`.
             */
            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;

            /**
             * 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_REQUIRED = 2,
                LABEL_REPEATED = 3
            }
        }

        /** Properties of an OneofDescriptorProto. */
        interface IOneofDescriptorProto {

            /** OneofDescriptorProto name */
            name?: (string|null);

            /** OneofDescriptorProto options */
            options?: (google.protobuf.IOneofOptions|null);
        }

        /** Describes a oneof. */
        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;

            /**
             * 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);

            /**
             * Range of reserved numeric values. Reserved numeric values may not be used
             * by enum values in the same enum declaration. Reserved ranges may not
             * overlap.
             */
            reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null);

            /**
             * Reserved enum value names, which may not be reused. A given name may only
             * be reserved once.
             */
            reservedName?: (string[]|null);
        }

        /** Describes an enum type. */
        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);

            /**
             * Range of reserved numeric values. Reserved numeric values may not be used
             * by enum values in the same enum declaration. Reserved ranges may not
             * overlap.
             */
            public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[];

            /**
             * Reserved enum value names, which may not be reused. A given name may only
             * be reserved once.
             */
            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;

            /**
             * 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 {

                /** Inclusive. */
                start?: (number|null);

                /** Inclusive. */
                end?: (number|null);
            }

            /**
             * Range of reserved numeric values. Reserved values may not be used by
             * entries in the same enum. Reserved ranges may not overlap.
             *
             * Note that this is distinct from DescriptorProto.ReservedRange in that it
             * is inclusive such that it can appropriately represent the entire int32
             * domain.
             */
            class EnumReservedRange implements IEnumReservedRange {

                /**
                 * Constructs a new EnumReservedRange.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange);

                /** Inclusive. */
                public start: number;

                /** Inclusive. */
                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;

                /**
                 * 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);
        }

        /** Describes a value within an enum. */
        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;

            /**
             * 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);
        }

        /** Describes a service. */
        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;

            /**
             * 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);

            /**
             * Input and output type names.  These are resolved in the same way as
             * FieldDescriptorProto.type_name, but must refer to a message type.
             */
            inputType?: (string|null);

            /** MethodDescriptorProto outputType */
            outputType?: (string|null);

            /** MethodDescriptorProto options */
            options?: (google.protobuf.IMethodOptions|null);

            /** Identifies if client streams multiple client messages */
            clientStreaming?: (boolean|null);

            /** Identifies if server streams multiple server messages */
            serverStreaming?: (boolean|null);
        }

        /** Describes a method of a service. */
        class MethodDescriptorProto implements IMethodDescriptorProto {

            /**
             * Constructs a new MethodDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IMethodDescriptorProto);

            /** MethodDescriptorProto name. */
            public name: string;

            /**
             * Input and output type names.  These are resolved in the same way as
             * FieldDescriptorProto.type_name, but must refer to a message type.
             */
            public inputType: string;

            /** MethodDescriptorProto outputType. */
            public outputType: string;

            /** MethodDescriptorProto options. */
            public options?: (google.protobuf.IMethodOptions|null);

            /** Identifies if client streams multiple client messages */
            public clientStreaming: boolean;

            /** Identifies if server streams multiple server messages */
            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;

            /**
             * 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 {

            /**
             * Sets the Java package where classes generated from this .proto will be
             * placed.  By default, the proto package is used, but this is often
             * inappropriate because proto packages do not normally start with backwards
             * domain names.
             */
            javaPackage?: (string|null);

            /**
             * Controls the name of the wrapper Java class generated for the .proto file.
             * That class will always contain the .proto file's getDescriptor() method as
             * well as any top-level extensions defined in the .proto file.
             * If java_multiple_files is disabled, then all the other classes from the
             * .proto file will be nested inside the single wrapper outer class.
             */
            javaOuterClassname?: (string|null);

            /**
             * If enabled, then the Java code generator will generate a separate .java
             * file for each top-level message, enum, and service defined in the .proto
             * file.  Thus, these types will *not* be nested inside the wrapper class
             * named by java_outer_classname.  However, the wrapper class will still be
             * generated to contain the file's getDescriptor() method as well as any
             * top-level extensions defined in the file.
             */
            javaMultipleFiles?: (boolean|null);

            /** This option does nothing. */
            javaGenerateEqualsAndHash?: (boolean|null);

            /**
             * If set true, then the Java2 code generator will generate code that
             * throws an exception whenever an attempt is made to assign a non-UTF-8
             * byte sequence to a string field.
             * Message reflection will do the same.
             * However, an extension field still accepts non-UTF-8 byte sequences.
             * This option has no effect on when used with the lite runtime.
             */
            javaStringCheckUtf8?: (boolean|null);

            /** FileOptions optimizeFor */
            optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|null);

            /**
             * Sets the Go package where structs generated from this .proto will be
             * placed. If omitted, the Go package will be derived from the following:
             * - The basename of the package import path, if provided.
             * - Otherwise, the package statement in the .proto file, if present.
             * - Otherwise, the basename of the .proto file, without extension.
             */
            goPackage?: (string|null);

            /**
             * Should generic services be generated in each language?  "Generic" services
             * are not specific to any particular RPC system.  They are generated by the
             * main code generators in each language (without additional plugins).
             * Generic services were the only kind of service generation supported by
             * early versions of google.protobuf.
             *
             * Generic services are now considered deprecated in favor of using plugins
             * that generate code specific to your particular RPC system.  Therefore,
             * these default to false.  Old code which depends on generic services should
             * explicitly set them to true.
             */
            ccGenericServices?: (boolean|null);

            /** FileOptions javaGenericServices */
            javaGenericServices?: (boolean|null);

            /** FileOptions pyGenericServices */
            pyGenericServices?: (boolean|null);

            /** FileOptions phpGenericServices */
            phpGenericServices?: (boolean|null);

            /**
             * Is this file deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for everything in the file, or it will be completely ignored; in the very
             * least, this is a formalization for deprecating files.
             */
            deprecated?: (boolean|null);

            /**
             * Enables the use of arenas for the proto messages in this file. This applies
             * only to generated classes for C++.
             */
            ccEnableArenas?: (boolean|null);

            /**
             * Sets the objective c class prefix which is prepended to all objective c
             * generated classes from this .proto. There is no default.
             */
            objcClassPrefix?: (string|null);

            /** Namespace for generated classes; defaults to the package. */
            csharpNamespace?: (string|null);

            /**
             * By default Swift generators will take the proto package and CamelCase it
             * replacing '.' with underscore and use that to prefix the types/symbols
             * defined. When this options is provided, they will use this value instead
             * to prefix the types/symbols defined.
             */
            swiftPrefix?: (string|null);

            /**
             * Sets the php class prefix which is prepended to all php generated classes
             * from this .proto. Default is empty.
             */
            phpClassPrefix?: (string|null);

            /**
             * Use this option to change the namespace of php generated classes. Default
             * is empty. When this option is empty, the package name will be used for
             * determining the namespace.
             */
            phpNamespace?: (string|null);

            /**
             * Use this option to change the namespace of php generated metadata classes.
             * Default is empty. When this option is empty, the proto file name will be
             * used for determining the namespace.
             */
            phpMetadataNamespace?: (string|null);

            /**
             * Use this option to change the package of ruby generated classes. Default
             * is empty. When this option is not set, the package name will be used for
             * determining the ruby package.
             */
            rubyPackage?: (string|null);

            /** Any features defined in the specific edition. */
            features?: (google.protobuf.IFeatureSet|null);

            /**
             * The parser stores options it doesn't recognize here.
             * See the documentation for the "Options" section above.
             */
            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);

            /**
             * Sets the Java package where classes generated from this .proto will be
             * placed.  By default, the proto package is used, but this is often
             * inappropriate because proto packages do not normally start with backwards
             * domain names.
             */
            public javaPackage: string;

            /**
             * Controls the name of the wrapper Java class generated for the .proto file.
             * That class will always contain the .proto file's getDescriptor() method as
             * well as any top-level extensions defined in the .proto file.
             * If java_multiple_files is disabled, then all the other classes from the
             * .proto file will be nested inside the single wrapper outer class.
             */
            public javaOuterClassname: string;

            /**
             * If enabled, then the Java code generator will generate a separate .java
             * file for each top-level message, enum, and service defined in the .proto
             * file.  Thus, these types will *not* be nested inside the wrapper class
             * named by java_outer_classname.  However, the wrapper class will still be
             * generated to contain the file's getDescriptor() method as well as any
             * top-level extensions defined in the file.
             */
            public javaMultipleFiles: boolean;

            /** This option does nothing. */
            public javaGenerateEqualsAndHash: boolean;

            /**
             * If set true, then the Java2 code generator will generate code that
             * throws an exception whenever an attempt is made to assign a non-UTF-8
             * byte sequence to a string field.
             * Message reflection will do the same.
             * However, an extension field still accepts non-UTF-8 byte sequences.
             * This option has no effect on when used with the lite runtime.
             */
            public javaStringCheckUtf8: boolean;

            /** FileOptions optimizeFor. */
            public optimizeFor: google.protobuf.FileOptions.OptimizeMode;

            /**
             * Sets the Go package where structs generated from this .proto will be
             * placed. If omitted, the Go package will be derived from the following:
             * - The basename of the package import path, if provided.
             * - Otherwise, the package statement in the .proto file, if present.
             * - Otherwise, the basename of the .proto file, without extension.
             */
            public goPackage: string;

            /**
             * Should generic services be generated in each language?  "Generic" services
             * are not specific to any particular RPC system.  They are generated by the
             * main code generators in each language (without additional plugins).
             * Generic services were the only kind of service generation supported by
             * early versions of google.protobuf.
             *
             * Generic services are now considered deprecated in favor of using plugins
             * that generate code specific to your particular RPC system.  Therefore,
             * these default to false.  Old code which depends on generic services should
             * explicitly set them to true.
             */
            public ccGenericServices: boolean;

            /** FileOptions javaGenericServices. */
            public javaGenericServices: boolean;

            /** FileOptions pyGenericServices. */
            public pyGenericServices: boolean;

            /** FileOptions phpGenericServices. */
            public phpGenericServices: boolean;

            /**
             * Is this file deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for everything in the file, or it will be completely ignored; in the very
             * least, this is a formalization for deprecating files.
             */
            public deprecated: boolean;

            /**
             * Enables the use of arenas for the proto messages in this file. This applies
             * only to generated classes for C++.
             */
            public ccEnableArenas: boolean;

            /**
             * Sets the objective c class prefix which is prepended to all objective c
             * generated classes from this .proto. There is no default.
             */
            public objcClassPrefix: string;

            /** Namespace for generated classes; defaults to the package. */
            public csharpNamespace: string;

            /**
             * By default Swift generators will take the proto package and CamelCase it
             * replacing '.' with underscore and use that to prefix the types/symbols
             * defined. When this options is provided, they will use this value instead
             * to prefix the types/symbols defined.
             */
            public swiftPrefix: string;

            /**
             * Sets the php class prefix which is prepended to all php generated classes
             * from this .proto. Default is empty.
             */
            public phpClassPrefix: string;

            /**
             * Use this option to change the namespace of php generated classes. Default
             * is empty. When this option is empty, the package name will be used for
             * determining the namespace.
             */
            public phpNamespace: string;

            /**
             * Use this option to change the namespace of php generated metadata classes.
             * Default is empty. When this option is empty, the proto file name will be
             * used for determining the namespace.
             */
            public phpMetadataNamespace: string;

            /**
             * Use this option to change the package of ruby generated classes. Default
             * is empty. When this option is not set, the package name will be used for
             * determining the ruby package.
             */
            public rubyPackage: string;

            /** Any features defined in the specific edition. */
            public features?: (google.protobuf.IFeatureSet|null);

            /**
             * The parser stores options it doesn't recognize here.
             * See the documentation for the "Options" section above.
             */
            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;

            /**
             * 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 {

            /** Generated classes can be optimized for speed or code size. */
            enum OptimizeMode {
                SPEED = 1,
                CODE_SIZE = 2,
                LITE_RUNTIME = 3
            }
        }

        /** Properties of a MessageOptions. */
        interface IMessageOptions {

            /**
             * Set true to use the old proto1 MessageSet wire format for extensions.
             * This is provided for backwards-compatibility with the MessageSet wire
             * format.  You should not use this for any other reason:  It's less
             * efficient, has fewer features, and is more complicated.
             *
             * The message must be defined exactly as follows:
             * message Foo {
             * option message_set_wire_format = true;
             * extensions 4 to max;
             * }
             * Note that the message cannot have any defined fields; MessageSets only
             * have extensions.
             *
             * All extensions of your type must be singular messages; e.g. they cannot
             * be int32s, enums, or repeated messages.
             *
             * Because this is an option, the above two restrictions are not enforced by
             * the protocol compiler.
             */
            messageSetWireFormat?: (boolean|null);

            /**
             * Disables the generation of the standard "descriptor()" accessor, which can
             * conflict with a field of the same name.  This is meant to make migration
             * from proto1 easier; new code should avoid fields named "descriptor".
             */
            noStandardDescriptorAccessor?: (boolean|null);

            /**
             * Is this message deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for the message, or it will be completely ignored; in the very least,
             * this is a formalization for deprecating messages.
             */
            deprecated?: (boolean|null);

            /**
             * NOTE: Do not set the option in .proto files. Always use the maps syntax
             * instead. The option should only be implicitly set by the proto compiler
             * parser.
             *
             * Whether the message is an automatically generated map entry type for the
             * maps field.
             *
             * For maps fields:
             * map<KeyType, ValueType> map_field = 1;
             * The parsed descriptor looks like:
             * message MapFieldEntry {
             * option map_entry = true;
             * optional KeyType key = 1;
             * optional ValueType value = 2;
             * }
             * repeated MapFieldEntry map_field = 1;
             *
             * Implementations may choose not to generate the map_entry=true message, but
             * use a native map in the target language to hold the keys and values.
             * The reflection APIs in such implementations still need to work as
             * if the field is a repeated message field.
             */
            mapEntry?: (boolean|null);

            /**
             * Enable the legacy handling of JSON field name conflicts.  This lowercases
             * and strips underscored from the fields before comparison in proto3 only.
             * The new behavior takes `json_name` into account and applies to proto2 as
             * well.
             *
             * This should only be used as a temporary measure against broken builds due
             * to the change in behavior for JSON field name conflicts.
             *
             * TODO This is legacy behavior we plan to remove once downstream
             * teams have had time to migrate.
             */
            deprecatedLegacyJsonFieldConflicts?: (boolean|null);

            /** Any features defined in the specific edition. */
            features?: (google.protobuf.IFeatureSet|null);

            /** The parser stores options it doesn't recognize here. See above. */
            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);

            /**
             * Set true to use the old proto1 MessageSet wire format for extensions.
             * This is provided for backwards-compatibility with the MessageSet wire
             * format.  You should not use this for any other reason:  It's less
             * efficient, has fewer features, and is more complicated.
             *
             * The message must be defined exactly as follows:
             * message Foo {
             * option message_set_wire_format = true;
             * extensions 4 to max;
             * }
             * Note that the message cannot have any defined fields; MessageSets only
             * have extensions.
             *
             * All extensions of your type must be singular messages; e.g. they cannot
             * be int32s, enums, or repeated messages.
             *
             * Because this is an option, the above two restrictions are not enforced by
             * the protocol compiler.
             */
            public messageSetWireFormat: boolean;

            /**
             * Disables the generation of the standard "descriptor()" accessor, which can
             * conflict with a field of the same name.  This is meant to make migration
             * from proto1 easier; new code should avoid fields named "descriptor".
             */
            public noStandardDescriptorAccessor: boolean;

            /**
             * Is this message deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for the message, or it will be completely ignored; in the very least,
             * this is a formalization for deprecating messages.
             */
            public deprecated: boolean;

            /**
             * NOTE: Do not set the option in .proto files. Always use the maps syntax
             * instead. The option should only be implicitly set by the proto compiler
             * parser.
             *
             * Whether the message is an automatically generated map entry type for the
             * maps field.
             *
             * For maps fields:
             * map<KeyType, ValueType> map_field = 1;
             * The parsed descriptor looks like:
             * message MapFieldEntry {
             * option map_entry = true;
             * optional KeyType key = 1;
             * optional ValueType value = 2;
             * }
             * repeated MapFieldEntry map_field = 1;
             *
             * Implementations may choose not to generate the map_entry=true message, but
             * use a native map in the target language to hold the keys and values.
             * The reflection APIs in such implementations still need to work as
             * if the field is a repeated message field.
             */
            public mapEntry: boolean;

            /**
             * Enable the legacy handling of JSON field name conflicts.  This lowercases
             * and strips underscored from the fields before comparison in proto3 only.
             * The new behavior takes `json_name` into account and applies to proto2 as
             * well.
             *
             * This should only be used as a temporary measure against broken builds due
             * to the change in behavior for JSON field name conflicts.
             *
             * TODO This is legacy behavior we plan to remove once downstream
             * teams have had time to migrate.
             */
            public deprecatedLegacyJsonFieldConflicts: boolean;

            /** Any features defined in the specific edition. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** The parser stores options it doesn't recognize here. See above. */
            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;

            /**
             * 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 {

            /**
             * The ctype option instructs the C++ code generator to use a different
             * representation of the field than it normally would.  See the specific
             * options below.  This option is only implemented to support use of
             * [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of
             * type "bytes" in the open source release -- sorry, we'll try to include
             * other types in a future version!
             */
            ctype?: (google.protobuf.FieldOptions.CType|null);

            /**
             * The packed option can be enabled for repeated primitive fields to enable
             * a more efficient representation on the wire. Rather than repeatedly
             * writing the tag and type for each element, the entire array is encoded as
             * a single length-delimited blob. In proto3, only explicit setting it to
             * false will avoid using packed encoding.
             */
            packed?: (boolean|null);

            /**
             * The jstype option determines the JavaScript type used for values of the
             * field.  The option is permitted only for 64 bit integral and fixed types
             * (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
             * is represented as JavaScript string, which avoids loss of precision that
             * can happen when a large value is converted to a floating point JavaScript.
             * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
             * use the JavaScript "number" type.  The behavior of the default option
             * JS_NORMAL is implementation dependent.
             *
             * This option is an enum to permit additional types to be added, e.g.
             * goog.math.Integer.
             */
            jstype?: (google.protobuf.FieldOptions.JSType|null);

            /**
             * Should this field be parsed lazily?  Lazy applies only to message-type
             * fields.  It means that when the outer message is initially parsed, the
             * inner message's contents will not be parsed but instead stored in encoded
             * form.  The inner message will actually be parsed when it is first accessed.
             *
             * This is only a hint.  Implementations are free to choose whether to use
             * eager or lazy parsing regardless of the value of this option.  However,
             * setting this option true suggests that the protocol author believes that
             * using lazy parsing on this field is worth the additional bookkeeping
             * overhead typically needed to implement it.
             *
             * This option does not affect the public interface of any generated code;
             * all method signatures remain the same.  Furthermore, thread-safety of the
             * interface is not affected by this option; const methods remain safe to
             * call from multiple threads concurrently, while non-const methods continue
             * to require exclusive access.
             *
             * Note that implementations may choose not to check required fields within
             * a lazy sub-message.  That is, calling IsInitialized() on the outer message
             * may return true even if the inner message has missing required fields.
             * This is necessary because otherwise the inner message would have to be
             * parsed in order to perform the check, defeating the purpose of lazy
             * parsing.  An implementation which chooses not to check required fields
             * must be consistent about it.  That is, for any particular sub-message, the
             * implementation must either *always* check its required fields, or *never*
             * check its required fields, regardless of whether or not the message has
             * been parsed.
             *
             * As of May 2022, lazy verifies the contents of the byte stream during
             * parsing.  An invalid byte stream will cause the overall parsing to fail.
             */
            lazy?: (boolean|null);

            /**
             * unverified_lazy does no correctness checks on the byte stream. This should
             * only be used where lazy with verification is prohibitive for performance
             * reasons.
             */
            unverifiedLazy?: (boolean|null);

            /**
             * Is this field deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for accessors, or it will be completely ignored; in the very least, this
             * is a formalization for deprecating fields.
             */
            deprecated?: (boolean|null);

            /** For Google-internal migration only. Do not use. */
            weak?: (boolean|null);

            /**
             * Indicate that the field value should not be printed out when using debug
             * formats, e.g. when the field contains sensitive credentials.
             */
            debugRedact?: (boolean|null);

            /** FieldOptions retention */
            retention?: (google.protobuf.FieldOptions.OptionRetention|null);

            /** FieldOptions targets */
            targets?: (google.protobuf.FieldOptions.OptionTargetType[]|null);

            /** FieldOptions editionDefaults */
            editionDefaults?: (google.protobuf.FieldOptions.IEditionDefault[]|null);

            /** Any features defined in the specific edition. */
            features?: (google.protobuf.IFeatureSet|null);

            /** The parser stores options it doesn't recognize here. See above. */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents a FieldOptions. */
        class FieldOptions implements IFieldOptions {

            /**
             * Constructs a new FieldOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFieldOptions);

            /**
             * The ctype option instructs the C++ code generator to use a different
             * representation of the field than it normally would.  See the specific
             * options below.  This option is only implemented to support use of
             * [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of
             * type "bytes" in the open source release -- sorry, we'll try to include
             * other types in a future version!
             */
            public ctype: google.protobuf.FieldOptions.CType;

            /**
             * The packed option can be enabled for repeated primitive fields to enable
             * a more efficient representation on the wire. Rather than repeatedly
             * writing the tag and type for each element, the entire array is encoded as
             * a single length-delimited blob. In proto3, only explicit setting it to
             * false will avoid using packed encoding.
             */
            public packed: boolean;

            /**
             * The jstype option determines the JavaScript type used for values of the
             * field.  The option is permitted only for 64 bit integral and fixed types
             * (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
             * is represented as JavaScript string, which avoids loss of precision that
             * can happen when a large value is converted to a floating point JavaScript.
             * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
             * use the JavaScript "number" type.  The behavior of the default option
             * JS_NORMAL is implementation dependent.
             *
             * This option is an enum to permit additional types to be added, e.g.
             * goog.math.Integer.
             */
            public jstype: google.protobuf.FieldOptions.JSType;

            /**
             * Should this field be parsed lazily?  Lazy applies only to message-type
             * fields.  It means that when the outer message is initially parsed, the
             * inner message's contents will not be parsed but instead stored in encoded
             * form.  The inner message will actually be parsed when it is first accessed.
             *
             * This is only a hint.  Implementations are free to choose whether to use
             * eager or lazy parsing regardless of the value of this option.  However,
             * setting this option true suggests that the protocol author believes that
             * using lazy parsing on this field is worth the additional bookkeeping
             * overhead typically needed to implement it.
             *
             * This option does not affect the public interface of any generated code;
             * all method signatures remain the same.  Furthermore, thread-safety of the
             * interface is not affected by this option; const methods remain safe to
             * call from multiple threads concurrently, while non-const methods continue
             * to require exclusive access.
             *
             * Note that implementations may choose not to check required fields within
             * a lazy sub-message.  That is, calling IsInitialized() on the outer message
             * may return true even if the inner message has missing required fields.
             * This is necessary because otherwise the inner message would have to be
             * parsed in order to perform the check, defeating the purpose of lazy
             * parsing.  An implementation which chooses not to check required fields
             * must be consistent about it.  That is, for any particular sub-message, the
             * implementation must either *always* check its required fields, or *never*
             * check its required fields, regardless of whether or not the message has
             * been parsed.
             *
             * As of May 2022, lazy verifies the contents of the byte stream during
             * parsing.  An invalid byte stream will cause the overall parsing to fail.
             */
            public lazy: boolean;

            /**
             * unverified_lazy does no correctness checks on the byte stream. This should
             * only be used where lazy with verification is prohibitive for performance
             * reasons.
             */
            public unverifiedLazy: boolean;

            /**
             * Is this field deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for accessors, or it will be completely ignored; in the very least, this
             * is a formalization for deprecating fields.
             */
            public deprecated: boolean;

            /** For Google-internal migration only. Do not use. */
            public weak: boolean;

            /**
             * Indicate that the field value should not be printed out when using debug
             * formats, e.g. when the field contains sensitive credentials.
             */
            public debugRedact: boolean;

            /** FieldOptions retention. */
            public retention: google.protobuf.FieldOptions.OptionRetention;

            /** FieldOptions targets. */
            public targets: google.protobuf.FieldOptions.OptionTargetType[];

            /** FieldOptions editionDefaults. */
            public editionDefaults: google.protobuf.FieldOptions.IEditionDefault[];

            /** Any features defined in the specific edition. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** The parser stores options it doesn't recognize here. See above. */
            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;

            /**
             * 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
            }

            /**
             * If set to RETENTION_SOURCE, the option will be omitted from the binary.
             * Note: as of January 2023, support for this is in progress and does not yet
             * have an effect (b/264593489).
             */
            enum OptionRetention {
                RETENTION_UNKNOWN = 0,
                RETENTION_RUNTIME = 1,
                RETENTION_SOURCE = 2
            }

            /**
             * This indicates the types of entities that the field may apply to when used
             * as an option. If it is unset, then the field may be freely used as an
             * option on any kind of entity. Note: as of January 2023, support for this is
             * in progress and does not yet have an effect (b/264593489).
             */
            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|null);

                /** Textproto 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;

                /** Textproto 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;

                /**
                 * 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 {

            /** Any features defined in the specific edition. */
            features?: (google.protobuf.IFeatureSet|null);

            /** The parser stores options it doesn't recognize here. See above. */
            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);

            /** Any features defined in the specific edition. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** The parser stores options it doesn't recognize here. See above. */
            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;

            /**
             * 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 {

            /**
             * Set this option to true to allow mapping different tag names to the same
             * value.
             */
            allowAlias?: (boolean|null);

            /**
             * Is this enum deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for the enum, or it will be completely ignored; in the very least, this
             * is a formalization for deprecating enums.
             */
            deprecated?: (boolean|null);

            /**
             * Enable the legacy handling of JSON field name conflicts.  This lowercases
             * and strips underscored from the fields before comparison in proto3 only.
             * The new behavior takes `json_name` into account and applies to proto2 as
             * well.
             * TODO Remove this legacy behavior once downstream teams have
             * had time to migrate.
             */
            deprecatedLegacyJsonFieldConflicts?: (boolean|null);

            /** Any features defined in the specific edition. */
            features?: (google.protobuf.IFeatureSet|null);

            /** The parser stores options it doesn't recognize here. See above. */
            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);

            /**
             * Set this option to true to allow mapping different tag names to the same
             * value.
             */
            public allowAlias: boolean;

            /**
             * Is this enum deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for the enum, or it will be completely ignored; in the very least, this
             * is a formalization for deprecating enums.
             */
            public deprecated: boolean;

            /**
             * Enable the legacy handling of JSON field name conflicts.  This lowercases
             * and strips underscored from the fields before comparison in proto3 only.
             * The new behavior takes `json_name` into account and applies to proto2 as
             * well.
             * TODO Remove this legacy behavior once downstream teams have
             * had time to migrate.
             */
            public deprecatedLegacyJsonFieldConflicts: boolean;

            /** Any features defined in the specific edition. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** The parser stores options it doesn't recognize here. See above. */
            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;

            /**
             * 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 {

            /**
             * Is this enum value deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for the enum value, or it will be completely ignored; in the very least,
             * this is a formalization for deprecating enum values.
             */
            deprecated?: (boolean|null);

            /** Any features defined in the specific edition. */
            features?: (google.protobuf.IFeatureSet|null);

            /**
             * Indicate that fields annotated with this enum value should not be printed
             * out when using debug formats, e.g. when the field contains sensitive
             * credentials.
             */
            debugRedact?: (boolean|null);

            /** The parser stores options it doesn't recognize here. See above. */
            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);

            /**
             * Is this enum value deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for the enum value, or it will be completely ignored; in the very least,
             * this is a formalization for deprecating enum values.
             */
            public deprecated: boolean;

            /** Any features defined in the specific edition. */
            public features?: (google.protobuf.IFeatureSet|null);

            /**
             * Indicate that fields annotated with this enum value should not be printed
             * out when using debug formats, e.g. when the field contains sensitive
             * credentials.
             */
            public debugRedact: boolean;

            /** The parser stores options it doesn't recognize here. See above. */
            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;

            /**
             * 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 {

            /** Any features defined in the specific edition. */
            features?: (google.protobuf.IFeatureSet|null);

            /**
             * Is this service deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for the service, or it will be completely ignored; in the very least,
             * this is a formalization for deprecating services.
             */
            deprecated?: (boolean|null);

            /** The parser stores options it doesn't recognize here. See above. */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents a ServiceOptions. */
        class ServiceOptions implements IServiceOptions {

            /**
             * Constructs a new ServiceOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IServiceOptions);

            /** Any features defined in the specific edition. */
            public features?: (google.protobuf.IFeatureSet|null);

            /**
             * Is this service deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for the service, or it will be completely ignored; in the very least,
             * this is a formalization for deprecating services.
             */
            public deprecated: boolean;

            /** The parser stores options it doesn't recognize here. See above. */
            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;

            /**
             * 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 {

            /**
             * Is this method deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for the method, or it will be completely ignored; in the very least,
             * this is a formalization for deprecating methods.
             */
            deprecated?: (boolean|null);

            /** MethodOptions idempotencyLevel */
            idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|null);

            /** Any features defined in the specific edition. */
            features?: (google.protobuf.IFeatureSet|null);

            /** The parser stores options it doesn't recognize here. See above. */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** MethodOptions .google.api.http */
            ".google.api.http"?: (google.api.IHttpRule|null);
        }

        /** Represents a MethodOptions. */
        class MethodOptions implements IMethodOptions {

            /**
             * Constructs a new MethodOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IMethodOptions);

            /**
             * Is this method deprecated?
             * Depending on the target platform, this can emit Deprecated annotations
             * for the method, or it will be completely ignored; in the very least,
             * this is a formalization for deprecating methods.
             */
            public deprecated: boolean;

            /** MethodOptions idempotencyLevel. */
            public idempotencyLevel: google.protobuf.MethodOptions.IdempotencyLevel;

            /** Any features defined in the specific edition. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** The parser stores options it doesn't recognize here. See above. */
            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;

            /**
             * 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 {

            /**
             * Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
             * or neither? HTTP based RPC implementation may choose GET verb for safe
             * methods, and PUT verb for idempotent methods instead of the default POST.
             */
            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);

            /**
             * The value of the uninterpreted option, in whatever type the tokenizer
             * identified it as during parsing. Exactly one of these should be set.
             */
            identifierValue?: (string|null);

            /** UninterpretedOption positiveIntValue */
            positiveIntValue?: (Long|null);

            /** UninterpretedOption negativeIntValue */
            negativeIntValue?: (Long|null);

            /** UninterpretedOption doubleValue */
            doubleValue?: (number|null);

            /** UninterpretedOption stringValue */
            stringValue?: (Uint8Array|null);

            /** UninterpretedOption aggregateValue */
            aggregateValue?: (string|null);
        }

        /**
         * A message representing a option the parser does not recognize. This only
         * appears in options protos created by the compiler::Parser class.
         * DescriptorPool resolves these when building Descriptor objects. Therefore,
         * options protos in descriptor objects (e.g. returned by Descriptor::options(),
         * or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
         * in them.
         */
        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[];

            /**
             * The value of the uninterpreted option, in whatever type the tokenizer
             * identified it as during parsing. Exactly one of these should be set.
             */
            public identifierValue: string;

            /** UninterpretedOption positiveIntValue. */
            public positiveIntValue: Long;

            /** UninterpretedOption negativeIntValue. */
            public negativeIntValue: Long;

            /** UninterpretedOption doubleValue. */
            public doubleValue: number;

            /** UninterpretedOption stringValue. */
            public stringValue: Uint8Array;

            /** 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;

            /**
             * 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;
            }

            /**
             * The name of the uninterpreted option.  Each string represents a segment in
             * a dot-separated name.  is_extension is true iff a segment represents an
             * extension (denoted with parentheses in options specs in .proto files).
             * E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
             * "foo.(bar.baz).moo".
             */
            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;

                /**
                 * 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|null);

            /** FeatureSet enumType */
            enumType?: (google.protobuf.FeatureSet.EnumType|null);

            /** FeatureSet repeatedFieldEncoding */
            repeatedFieldEncoding?: (google.protobuf.FeatureSet.RepeatedFieldEncoding|null);

            /** FeatureSet utf8Validation */
            utf8Validation?: (google.protobuf.FeatureSet.Utf8Validation|null);

            /** FeatureSet messageEncoding */
            messageEncoding?: (google.protobuf.FeatureSet.MessageEncoding|null);

            /** FeatureSet jsonFormat */
            jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|null);
        }

        /**
         * TODO Enums in C++ gencode (and potentially other languages) are
         * not well scoped.  This means that each of the feature enums below can clash
         * with each other.  The short names we've chosen maximize call-site
         * readability, but leave us very open to this scenario.  A future feature will
         * be designed and implemented to handle this, hopefully before we ever hit a
         * conflict here.
         */
        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;

            /** FeatureSet enumType. */
            public enumType: google.protobuf.FeatureSet.EnumType;

            /** FeatureSet repeatedFieldEncoding. */
            public repeatedFieldEncoding: google.protobuf.FeatureSet.RepeatedFieldEncoding;

            /** FeatureSet utf8Validation. */
            public utf8Validation: google.protobuf.FeatureSet.Utf8Validation;

            /** FeatureSet messageEncoding. */
            public messageEncoding: google.protobuf.FeatureSet.MessageEncoding;

            /** FeatureSet jsonFormat. */
            public jsonFormat: 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;

            /**
             * 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,
                UNVERIFIED = 1,
                VERIFY = 2
            }

            /** 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);

            /**
             * The minimum supported edition (inclusive) when this was constructed.
             * Editions before this will not have defaults.
             */
            minimumEdition?: (google.protobuf.Edition|null);

            /**
             * The maximum known edition (inclusive) when this was constructed. Editions
             * after this will not have reliable defaults.
             */
            maximumEdition?: (google.protobuf.Edition|null);
        }

        /**
         * A compiled specification for the defaults of a set of features.  These
         * messages are generated from FeatureSet extensions and can be used to seed
         * feature resolution. The resolution with this object becomes a simple search
         * for the closest matching edition, followed by proto merges.
         */
        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[];

            /**
             * The minimum supported edition (inclusive) when this was constructed.
             * Editions before this will not have defaults.
             */
            public minimumEdition: google.protobuf.Edition;

            /**
             * The maximum known edition (inclusive) when this was constructed. Editions
             * after this will not have reliable defaults.
             */
            public maximumEdition: 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;

            /**
             * 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|null);

                /** FeatureSetEditionDefault features */
                features?: (google.protobuf.IFeatureSet|null);
            }

            /**
             * A map from every known edition with a unique set of defaults to its
             * defaults. Not all editions may be contained here.  For a given edition,
             * the defaults at the closest matching edition ordered at or before it should
             * be used.  This field must be in strict ascending order by edition.
             */
            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;

                /** 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;

                /**
                 * 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 {

            /**
             * A Location identifies a piece of source code in a .proto file which
             * corresponds to a particular definition.  This information is intended
             * to be useful to IDEs, code indexers, documentation generators, and similar
             * tools.
             *
             * For example, say we have a file like:
             * message Foo {
             * optional string foo = 1;
             * }
             * Let's look at just the field definition:
             * optional string foo = 1;
             * ^       ^^     ^^  ^  ^^^
             * a       bc     de  f  ghi
             * We have the following locations:
             * span   path               represents
             * [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.
             * [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).
             * [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).
             * [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
             * [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
             *
             * Notes:
             * - A location may refer to a repeated field itself (i.e. not to any
             * particular index within it).  This is used whenever a set of elements are
             * logically enclosed in a single code segment.  For example, an entire
             * extend block (possibly containing multiple extension definitions) will
             * have an outer location whose path refers to the "extensions" repeated
             * field without an index.
             * - Multiple locations may have the same path.  This happens when a single
             * logical declaration is spread out across multiple places.  The most
             * obvious example is the "extend" block again -- there may be multiple
             * extend blocks in the same scope, each of which will have the same path.
             * - A location's span is not always a subset of its parent's span.  For
             * example, the "extendee" of an extension declaration appears at the
             * beginning of the "extend" block and is shared by all extensions within
             * the block.
             * - Just because a location's span is a subset of some other location's span
             * does not mean that it is a descendant.  For example, a "group" defines
             * both a type and a field in a single declaration.  Thus, the locations
             * corresponding to the type and field and their components will overlap.
             * - Code which tries to interpret locations should probably be designed to
             * ignore those that it doesn't understand, as more types of locations could
             * be recorded in the future.
             */
            location?: (google.protobuf.SourceCodeInfo.ILocation[]|null);
        }

        /**
         * Encapsulates information about the original source file from which a
         * FileDescriptorProto was generated.
         */
        class SourceCodeInfo implements ISourceCodeInfo {

            /**
             * Constructs a new SourceCodeInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.ISourceCodeInfo);

            /**
             * A Location identifies a piece of source code in a .proto file which
             * corresponds to a particular definition.  This information is intended
             * to be useful to IDEs, code indexers, documentation generators, and similar
             * tools.
             *
             * For example, say we have a file like:
             * message Foo {
             * optional string foo = 1;
             * }
             * Let's look at just the field definition:
             * optional string foo = 1;
             * ^       ^^     ^^  ^  ^^^
             * a       bc     de  f  ghi
             * We have the following locations:
             * span   path               represents
             * [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.
             * [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).
             * [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).
             * [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
             * [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
             *
             * Notes:
             * - A location may refer to a repeated field itself (i.e. not to any
             * particular index within it).  This is used whenever a set of elements are
             * logically enclosed in a single code segment.  For example, an entire
             * extend block (possibly containing multiple extension definitions) will
             * have an outer location whose path refers to the "extensions" repeated
             * field without an index.
             * - Multiple locations may have the same path.  This happens when a single
             * logical declaration is spread out across multiple places.  The most
             * obvious example is the "extend" block again -- there may be multiple
             * extend blocks in the same scope, each of which will have the same path.
             * - A location's span is not always a subset of its parent's span.  For
             * example, the "extendee" of an extension declaration appears at the
             * beginning of the "extend" block and is shared by all extensions within
             * the block.
             * - Just because a location's span is a subset of some other location's span
             * does not mean that it is a descendant.  For example, a "group" defines
             * both a type and a field in a single declaration.  Thus, the locations
             * corresponding to the type and field and their components will overlap.
             * - Code which tries to interpret locations should probably be designed to
             * ignore those that it doesn't understand, as more types of locations could
             * be recorded in the future.
             */
            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;

            /**
             * 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 {

                /**
                 * Identifies which part of the FileDescriptorProto was defined at this
                 * location.
                 *
                 * Each element is a field number or an index.  They form a path from
                 * the root FileDescriptorProto to the place where the definition occurs.
                 * For example, this path:
                 * [ 4, 3, 2, 7, 1 ]
                 * refers to:
                 * file.message_type(3)  // 4, 3
                 * .field(7)         // 2, 7
                 * .name()           // 1
                 * This is because FileDescriptorProto.message_type has field number 4:
                 * repeated DescriptorProto message_type = 4;
                 * and DescriptorProto.field has field number 2:
                 * repeated FieldDescriptorProto field = 2;
                 * and FieldDescriptorProto.name has field number 1:
                 * optional string name = 1;
                 *
                 * Thus, the above path gives the location of a field name.  If we removed
                 * the last element:
                 * [ 4, 3, 2, 7 ]
                 * this path refers to the whole field declaration (from the beginning
                 * of the label to the terminating semicolon).
                 */
                path?: (number[]|null);

                /**
                 * Always has exactly three or four elements: start line, start column,
                 * end line (optional, otherwise assumed same as start line), end column.
                 * These are packed into a single field for efficiency.  Note that line
                 * and column numbers are zero-based -- typically you will want to add
                 * 1 to each before displaying to a user.
                 */
                span?: (number[]|null);

                /**
                 * If this SourceCodeInfo represents a complete declaration, these are any
                 * comments appearing before and after the declaration which appear to be
                 * attached to the declaration.
                 *
                 * A series of line comments appearing on consecutive lines, with no other
                 * tokens appearing on those lines, will be treated as a single comment.
                 *
                 * leading_detached_comments will keep paragraphs of comments that appear
                 * before (but not connected to) the current element. Each paragraph,
                 * separated by empty lines, will be one comment element in the repeated
                 * field.
                 *
                 * Only the comment content is provided; comment markers (e.g. //) are
                 * stripped out.  For block comments, leading whitespace and an asterisk
                 * will be stripped from the beginning of each line other than the first.
                 * Newlines are included in the output.
                 *
                 * Examples:
                 *
                 * optional int32 foo = 1;  // Comment attached to foo.
                 * // Comment attached to bar.
                 * optional int32 bar = 2;
                 *
                 * optional string baz = 3;
                 * // Comment attached to baz.
                 * // Another line attached to baz.
                 *
                 * // Comment attached to moo.
                 * //
                 * // Another line attached to moo.
                 * optional double moo = 4;
                 *
                 * // Detached comment for corge. This is not leading or trailing comments
                 * // to moo or corge because there are blank lines separating it from
                 * // both.
                 *
                 * // Detached comment for corge paragraph 2.
                 *
                 * optional string corge = 5;
                 * /* Block comment attached
                 * to corge.  Leading asterisks
                 * will be removed. * /
                 * /* Block comment attached to
                 * grault. * /
                 * optional int32 grault = 6;
                 *
                 * // ignored detached comments.
                 */
                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);

                /**
                 * Identifies which part of the FileDescriptorProto was defined at this
                 * location.
                 *
                 * Each element is a field number or an index.  They form a path from
                 * the root FileDescriptorProto to the place where the definition occurs.
                 * For example, this path:
                 * [ 4, 3, 2, 7, 1 ]
                 * refers to:
                 * file.message_type(3)  // 4, 3
                 * .field(7)         // 2, 7
                 * .name()           // 1
                 * This is because FileDescriptorProto.message_type has field number 4:
                 * repeated DescriptorProto message_type = 4;
                 * and DescriptorProto.field has field number 2:
                 * repeated FieldDescriptorProto field = 2;
                 * and FieldDescriptorProto.name has field number 1:
                 * optional string name = 1;
                 *
                 * Thus, the above path gives the location of a field name.  If we removed
                 * the last element:
                 * [ 4, 3, 2, 7 ]
                 * this path refers to the whole field declaration (from the beginning
                 * of the label to the terminating semicolon).
                 */
                public path: number[];

                /**
                 * Always has exactly three or four elements: start line, start column,
                 * end line (optional, otherwise assumed same as start line), end column.
                 * These are packed into a single field for efficiency.  Note that line
                 * and column numbers are zero-based -- typically you will want to add
                 * 1 to each before displaying to a user.
                 */
                public span: number[];

                /**
                 * If this SourceCodeInfo represents a complete declaration, these are any
                 * comments appearing before and after the declaration which appear to be
                 * attached to the declaration.
                 *
                 * A series of line comments appearing on consecutive lines, with no other
                 * tokens appearing on those lines, will be treated as a single comment.
                 *
                 * leading_detached_comments will keep paragraphs of comments that appear
                 * before (but not connected to) the current element. Each paragraph,
                 * separated by empty lines, will be one comment element in the repeated
                 * field.
                 *
                 * Only the comment content is provided; comment markers (e.g. //) are
                 * stripped out.  For block comments, leading whitespace and an asterisk
                 * will be stripped from the beginning of each line other than the first.
                 * Newlines are included in the output.
                 *
                 * Examples:
                 *
                 * optional int32 foo = 1;  // Comment attached to foo.
                 * // Comment attached to bar.
                 * optional int32 bar = 2;
                 *
                 * optional string baz = 3;
                 * // Comment attached to baz.
                 * // Another line attached to baz.
                 *
                 * // Comment attached to moo.
                 * //
                 * // Another line attached to moo.
                 * optional double moo = 4;
                 *
                 * // Detached comment for corge. This is not leading or trailing comments
                 * // to moo or corge because there are blank lines separating it from
                 * // both.
                 *
                 * // Detached comment for corge paragraph 2.
                 *
                 * optional string corge = 5;
                 * /* Block comment attached
                 * * to corge.  Leading asterisks
                 * * will be removed. * /
                 * /* Block comment attached to
                 * * grault. * /
                 * optional int32 grault = 6;
                 *
                 * // ignored detached comments.
                 */
                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;

                /**
                 * 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 {

            /**
             * An Annotation connects some span of text in generated code to an element
             * of its generating .proto file.
             */
            annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null);
        }

        /**
         * Describes the relationship between generated code and its original source
         * file. A GeneratedCodeInfo message is associated with only one generated
         * source file, but may contain references to different source .proto files.
         */
        class GeneratedCodeInfo implements IGeneratedCodeInfo {

            /**
             * Constructs a new GeneratedCodeInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IGeneratedCodeInfo);

            /**
             * An Annotation connects some span of text in generated code to an element
             * of its generating .proto file.
             */
            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;

            /**
             * 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 {

                /**
                 * Identifies the element in the original source .proto file. This field
                 * is formatted the same as SourceCodeInfo.Location.path.
                 */
                path?: (number[]|null);

                /** Identifies the filesystem path to the original source .proto. */
                sourceFile?: (string|null);

                /**
                 * Identifies the starting offset in bytes in the generated code
                 * that relates to the identified object.
                 */
                begin?: (number|null);

                /**
                 * Identifies the ending offset in bytes in the generated code that
                 * relates to the identified object. The end offset should be one past
                 * the last relevant byte (so the length of the text = end - begin).
                 */
                end?: (number|null);

                /** Annotation semantic */
                semantic?: (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);

                /**
                 * Identifies the element in the original source .proto file. This field
                 * is formatted the same as SourceCodeInfo.Location.path.
                 */
                public path: number[];

                /** Identifies the filesystem path to the original source .proto. */
                public sourceFile: string;

                /**
                 * Identifies the starting offset in bytes in the generated code
                 * that relates to the identified object.
                 */
                public begin: number;

                /**
                 * Identifies the ending offset in bytes in the generated code that
                 * relates to the identified object. The end offset should be one past
                 * the last relevant byte (so the length of the text = end - begin).
                 */
                public end: number;

                /** Annotation semantic. */
                public semantic: 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;

                /**
                 * 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 {

                /**
                 * Represents the identified object's effect on the element in the original
                 * .proto file.
                 */
                enum Semantic {
                    NONE = 0,
                    SET = 1,
                    ALIAS = 2
                }
            }
        }
    }

    /** Namespace api. */
    namespace api {

        /** Properties of a Http. */
        interface IHttp {

            /**
             * A list of HTTP configuration rules that apply to individual API methods.
             *
             * *NOTE:** All service configuration rules follow "last one wins" order.
             */
            rules?: (google.api.IHttpRule[]|null);

            /**
             * When set to true, URL path parameters will be fully URI-decoded except in
             * cases of single segment matches in reserved expansion, where "%2F" will be
             * left encoded.
             *
             * The default behavior is to not decode RFC 6570 reserved characters in multi
             * segment matches.
             */
            fullyDecodeReservedExpansion?: (boolean|null);
        }

        /**
         * Defines the HTTP configuration for an API service. It contains a list of
         * [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method
         * to one or more HTTP REST API methods.
         */
        class Http implements IHttp {

            /**
             * Constructs a new Http.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IHttp);

            /**
             * A list of HTTP configuration rules that apply to individual API methods.
             *
             * **NOTE:** All service configuration rules follow "last one wins" order.
             */
            public rules: google.api.IHttpRule[];

            /**
             * When set to true, URL path parameters will be fully URI-decoded except in
             * cases of single segment matches in reserved expansion, where "%2F" will be
             * left encoded.
             *
             * The default behavior is to not decode RFC 6570 reserved characters in multi
             * segment matches.
             */
            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;

            /**
             * 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 {

            /**
             * Selects a method to which this rule applies.
             *
             * Refer to [selector][google.api.DocumentationRule.selector] for syntax
             * details.
             */
            selector?: (string|null);

            /**
             * Maps to HTTP GET. Used for listing and getting information about
             * resources.
             */
            get?: (string|null);

            /** Maps to HTTP PUT. Used for replacing a resource. */
            put?: (string|null);

            /** Maps to HTTP POST. Used for creating a resource or performing an action. */
            post?: (string|null);

            /** Maps to HTTP DELETE. Used for deleting a resource. */
            "delete"?: (string|null);

            /** Maps to HTTP PATCH. Used for updating a resource. */
            patch?: (string|null);

            /**
             * The custom pattern is used for specifying an HTTP method that is not
             * included in the `pattern` field, such as HEAD, or "*" to leave the
             * HTTP method unspecified for this rule. The wild-card rule is useful
             * for services that provide content to Web (HTML) clients.
             */
            custom?: (google.api.ICustomHttpPattern|null);

            /**
             * The name of the request field whose value is mapped to the HTTP request
             * body, or `*` for mapping all request fields not captured by the path
             * pattern to the HTTP body, or omitted for not having any HTTP request body.
             *
             * NOTE: the referred field must be present at the top-level of the request
             * message type.
             */
            body?: (string|null);

            /**
             * Optional. The name of the response field whose value is mapped to the HTTP
             * response body. When omitted, the entire response message will be used
             * as the HTTP response body.
             *
             * NOTE: The referred field must be present at the top-level of the response
             * message type.
             */
            responseBody?: (string|null);

            /**
             * Additional HTTP bindings for the selector. Nested bindings must
             * not contain an `additional_bindings` field themselves (that is,
             * the nesting may only be one level deep).
             */
            additionalBindings?: (google.api.IHttpRule[]|null);
        }

        /**
         * # gRPC Transcoding
         *
         * gRPC Transcoding is a feature for mapping between a gRPC method and one or
         * more HTTP REST endpoints. It allows developers to build a single API service
         * that supports both gRPC APIs and REST APIs. Many systems, including [Google
         * APIs](https://github.com/googleapis/googleapis),
         * [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC
         * Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
         * and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature
         * and use it for large scale production services.
         *
         * `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies
         * how different portions of the gRPC request message are mapped to the URL
         * path, URL query parameters, and HTTP request body. It also controls how the
         * gRPC response message is mapped to the HTTP response body. `HttpRule` is
         * typically specified as an `google.api.http` annotation on the gRPC method.
         *
         * Each mapping specifies a URL path template and an HTTP method. The path
         * template may refer to one or more fields in the gRPC request message, as long
         * as each field is a non-repeated field with a primitive (non-message) type.
         * The path template controls how fields of the request message are mapped to
         * the URL path.
         *
         * Example:
         *
         * service Messaging {
         * rpc GetMessage(GetMessageRequest) returns (Message) {
         * option (google.api.http) = {
         * get: "/v1/{name=messages/*}"
         * };
         * }
         * }
         * message GetMessageRequest {
         * string name = 1; // Mapped to URL path.
         * }
         * message Message {
         * string text = 1; // The resource content.
         * }
         *
         * This enables an HTTP REST to gRPC mapping as below:
         *
         * HTTP | gRPC
         * -----|-----
         * `GET /v1/messages/123456`  | `GetMessage(name: "messages/123456")`
         *
         * Any fields in the request message which are not bound by the path template
         * automatically become HTTP query parameters if there is no HTTP request body.
         * For example:
         *
         * service Messaging {
         * rpc GetMessage(GetMessageRequest) returns (Message) {
         * option (google.api.http) = {
         * get:"/v1/messages/{message_id}"
         * };
         * }
         * }
         * message GetMessageRequest {
         * message SubMessage {
         * string subfield = 1;
         * }
         * string message_id = 1; // Mapped to URL path.
         * int64 revision = 2;    // Mapped to URL query parameter `revision`.
         * SubMessage sub = 3;    // Mapped to URL query parameter `sub.subfield`.
         * }
         *
         * This enables a HTTP JSON to RPC mapping as below:
         *
         * HTTP | gRPC
         * -----|-----
         * `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
         * `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield:
         * "foo"))`
         *
         * Note that fields which are mapped to URL query parameters must have a
         * primitive type or a repeated primitive type or a non-repeated message type.
         * In the case of a repeated type, the parameter can be repeated in the URL
         * as `...?param=A&param=B`. In the case of a message type, each field of the
         * message is mapped to a separate parameter, such as
         * `...?foo.a=A&foo.b=B&foo.c=C`.
         *
         * For HTTP methods that allow a request body, the `body` field
         * specifies the mapping. Consider a REST update method on the
         * message resource collection:
         *
         * service Messaging {
         * rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
         * option (google.api.http) = {
         * patch: "/v1/messages/{message_id}"
         * body: "message"
         * };
         * }
         * }
         * message UpdateMessageRequest {
         * string message_id = 1; // mapped to the URL
         * Message message = 2;   // mapped to the body
         * }
         *
         * The following HTTP JSON to RPC mapping is enabled, where the
         * representation of the JSON in the request body is determined by
         * protos JSON encoding:
         *
         * HTTP | gRPC
         * -----|-----
         * `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
         * "123456" message { text: "Hi!" })`
         *
         * The special name `*` can be used in the body mapping to define that
         * every field not bound by the path template should be mapped to the
         * request body.  This enables the following alternative definition of
         * the update method:
         *
         * service Messaging {
         * rpc UpdateMessage(Message) returns (Message) {
         * option (google.api.http) = {
         * patch: "/v1/messages/{message_id}"
         * body: "*"
         * };
         * }
         * }
         * message Message {
         * string message_id = 1;
         * string text = 2;
         * }
         *
         *
         * The following HTTP JSON to RPC mapping is enabled:
         *
         * HTTP | gRPC
         * -----|-----
         * `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
         * "123456" text: "Hi!")`
         *
         * Note that when using `*` in the body mapping, it is not possible to
         * have HTTP parameters, as all fields not bound by the path end in
         * the body. This makes this option more rarely used in practice when
         * defining REST APIs. The common usage of `*` is in custom methods
         * which don't use the URL at all for transferring data.
         *
         * It is possible to define multiple HTTP methods for one RPC by using
         * the `additional_bindings` option. Example:
         *
         * service Messaging {
         * rpc GetMessage(GetMessageRequest) returns (Message) {
         * option (google.api.http) = {
         * get: "/v1/messages/{message_id}"
         * additional_bindings {
         * get: "/v1/users/{user_id}/messages/{message_id}"
         * }
         * };
         * }
         * }
         * message GetMessageRequest {
         * string message_id = 1;
         * string user_id = 2;
         * }
         *
         * This enables the following two alternative HTTP JSON to RPC mappings:
         *
         * HTTP | gRPC
         * -----|-----
         * `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
         * `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id:
         * "123456")`
         *
         * ## Rules for HTTP mapping
         *
         * 1. Leaf request fields (recursive expansion nested messages in the request
         * message) are classified into three categories:
         * - Fields referred by the path template. They are passed via the URL path.
         * - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They
         * are passed via the HTTP
         * request body.
         * - All other fields are passed via the URL query parameters, and the
         * parameter name is the field path in the request message. A repeated
         * field can be represented as multiple query parameters under the same
         * name.
         * 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL
         * query parameter, all fields
         * are passed via URL path and HTTP request body.
         * 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP
         * request body, all
         * fields are passed via URL path and URL query parameters.
         *
         * ### Path template syntax
         *
         * Template = "/" Segments [ Verb ] ;
         * Segments = Segment { "/" Segment } ;
         * Segment  = "*" | "**" | LITERAL | Variable ;
         * Variable = "{" FieldPath [ "=" Segments ] "}" ;
         * FieldPath = IDENT { "." IDENT } ;
         * Verb     = ":" LITERAL ;
         *
         * The syntax `*` matches a single URL path segment. The syntax `**` matches
         * zero or more URL path segments, which must be the last part of the URL path
         * except the `Verb`.
         *
         * The syntax `Variable` matches part of the URL path as specified by its
         * template. A variable template must not contain other variables. If a variable
         * matches a single path segment, its template may be omitted, e.g. `{var}`
         * is equivalent to `{var=*}`.
         *
         * The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`
         * contains any reserved character, such characters should be percent-encoded
         * before the matching.
         *
         * If a variable contains exactly one path segment, such as `"{var}"` or
         * `"{var=*}"`, when such a variable is expanded into a URL path on the client
         * side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The
         * server side does the reverse decoding. Such variables show up in the
         * [Discovery
         * Document](https://developers.google.com/discovery/v1/reference/apis) as
         * `{var}`.
         *
         * If a variable contains multiple path segments, such as `"{var=foo/*}"`
         * or `"{var=**}"`, when such a variable is expanded into a URL path on the
         * client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.
         * The server side does the reverse decoding, except "%2F" and "%2f" are left
         * unchanged. Such variables show up in the
         * [Discovery
         * Document](https://developers.google.com/discovery/v1/reference/apis) as
         * `{+var}`.
         *
         * ## Using gRPC API Service Configuration
         *
         * gRPC API Service Configuration (service config) is a configuration language
         * for configuring a gRPC service to become a user-facing product. The
         * service config is simply the YAML representation of the `google.api.Service`
         * proto message.
         *
         * As an alternative to annotating your proto file, you can configure gRPC
         * transcoding in your service config YAML files. You do this by specifying a
         * `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
         * effect as the proto annotation. This can be particularly useful if you
         * have a proto that is reused in multiple services. Note that any transcoding
         * specified in the service config will override any matching transcoding
         * configuration in the proto.
         *
         * Example:
         *
         * http:
         * rules:
         * # Selects a gRPC method and applies HttpRule to it.
         * - selector: example.v1.Messaging.GetMessage
         * get: /v1/messages/{message_id}/{sub.subfield}
         *
         * ## Special notes
         *
         * When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the
         * proto to JSON conversion must follow the [proto3
         * specification](https://developers.google.com/protocol-buffers/docs/proto3#json).
         *
         * While the single segment variable follows the semantics of
         * [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
         * Expansion, the multi segment variable **does not** follow RFC 6570 Section
         * 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion
         * does not expand special characters like `?` and `#`, which would lead
         * to invalid URLs. As the result, gRPC Transcoding uses a custom encoding
         * for multi segment variables.
         *
         * The path variables **must not** refer to any repeated or mapped field,
         * because client libraries are not capable of handling such variable expansion.
         *
         * The path variables **must not** capture the leading "/" character. The reason
         * is that the most common use case "{var}" does not capture the leading "/"
         * character. For consistency, all path variables must share the same behavior.
         *
         * Repeated message fields must not be mapped to URL query parameters, because
         * no client library can support such complicated mapping.
         *
         * If an API needs to use a JSON array for request or response body, it can map
         * the request or response body to a repeated field. However, some gRPC
         * Transcoding implementations may not support this feature.
         */
        class HttpRule implements IHttpRule {

            /**
             * Constructs a new HttpRule.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IHttpRule);

            /**
             * Selects a method to which this rule applies.
             *
             * Refer to [selector][google.api.DocumentationRule.selector] for syntax
             * details.
             */
            public selector: string;

            /**
             * Maps to HTTP GET. Used for listing and getting information about
             * resources.
             */
            public get?: (string|null);

            /** Maps to HTTP PUT. Used for replacing a resource. */
            public put?: (string|null);

            /** Maps to HTTP POST. Used for creating a resource or performing an action. */
            public post?: (string|null);

            /** Maps to HTTP DELETE. Used for deleting a resource. */
            public delete?: (string|null);

            /** Maps to HTTP PATCH. Used for updating a resource. */
            public patch?: (string|null);

            /**
             * The custom pattern is used for specifying an HTTP method that is not
             * included in the `pattern` field, such as HEAD, or "*" to leave the
             * HTTP method unspecified for this rule. The wild-card rule is useful
             * for services that provide content to Web (HTML) clients.
             */
            public custom?: (google.api.ICustomHttpPattern|null);

            /**
             * The name of the request field whose value is mapped to the HTTP request
             * body, or `*` for mapping all request fields not captured by the path
             * pattern to the HTTP body, or omitted for not having any HTTP request body.
             *
             * NOTE: the referred field must be present at the top-level of the request
             * message type.
             */
            public body: string;

            /**
             * Optional. The name of the response field whose value is mapped to the HTTP
             * response body. When omitted, the entire response message will be used
             * as the HTTP response body.
             *
             * NOTE: The referred field must be present at the top-level of the response
             * message type.
             */
            public responseBody: string;

            /**
             * Additional HTTP bindings for the selector. Nested bindings must
             * not contain an `additional_bindings` field themselves (that is,
             * the nesting may only be one level deep).
             */
            public additionalBindings: google.api.IHttpRule[];

            /**
             * Determines the URL pattern is matched by this rules. This pattern can be
             * used with any of the {get|put|post|delete|patch} methods. A custom method
             * can be defined using the 'custom' field.
             */
            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;

            /**
             * 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 {

            /** The name of this custom HTTP verb. */
            kind?: (string|null);

            /** The path matched by this custom verb. */
            path?: (string|null);
        }

        /** A custom pattern is used for defining custom HTTP verb. */
        class CustomHttpPattern implements ICustomHttpPattern {

            /**
             * Constructs a new CustomHttpPattern.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.ICustomHttpPattern);

            /** The name of this custom HTTP verb. */
            public kind: string;

            /** The path matched by this custom verb. */
            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;

            /**
             * 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;
        }
    }

    /** Namespace rpc. */
    namespace rpc {

        /** Properties of a Status. */
        interface IStatus {

            /**
             * The status code, which should be an enum value of
             * [google.rpc.Code][google.rpc.Code].
             */
            code?: (number|null);

            /**
             * 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.
             */
            message?: (string|null);

            /**
             * A list of messages that carry the error details.  There is a common set of
             * message types for APIs to use.
             */
            details?: (google.protobuf.IAny[]|null);
        }

        /**
         * 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).
         */
        class Status implements IStatus {

            /**
             * Constructs a new Status.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IStatus);

            /**
             * The status code, which should be an enum value of
             * [google.rpc.Code][google.rpc.Code].
             */
            public code: number;

            /**
             * 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.
             */
            public message: string;

            /**
             * A list of messages that carry the error details.  There is a common set of
             * message types for APIs to use.
             */
            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;

            /**
             * 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;
        }
    }
}

/** Namespace grpc. */
export namespace grpc {

    /** Namespace health. */
    namespace health {

        /** Namespace v1. */
        namespace v1 {

            /** Properties of a HealthCheckRequest. */
            interface IHealthCheckRequest {

                /** HealthCheckRequest service */
                service?: (string|null);
            }

            /** Represents a HealthCheckRequest. */
            class HealthCheckRequest implements IHealthCheckRequest {

                /**
                 * Constructs a new HealthCheckRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: grpc.health.v1.IHealthCheckRequest);

                /** HealthCheckRequest service. */
                public service: string;

                /**
                 * Creates a new HealthCheckRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns HealthCheckRequest instance
                 */
                public static create(properties?: grpc.health.v1.IHealthCheckRequest): grpc.health.v1.HealthCheckRequest;

                /**
                 * Encodes the specified HealthCheckRequest message. Does not implicitly {@link grpc.health.v1.HealthCheckRequest.verify|verify} messages.
                 * @param message HealthCheckRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: grpc.health.v1.IHealthCheckRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified HealthCheckRequest message, length delimited. Does not implicitly {@link grpc.health.v1.HealthCheckRequest.verify|verify} messages.
                 * @param message HealthCheckRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: grpc.health.v1.IHealthCheckRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a HealthCheckRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns HealthCheckRequest
                 * @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): grpc.health.v1.HealthCheckRequest;

                /**
                 * Decodes a HealthCheckRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns HealthCheckRequest
                 * @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)): grpc.health.v1.HealthCheckRequest;

                /**
                 * Creates a HealthCheckRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns HealthCheckRequest
                 */
                public static fromObject(object: { [k: string]: any }): grpc.health.v1.HealthCheckRequest;

                /**
                 * Creates a plain object from a HealthCheckRequest message. Also converts values to other types if specified.
                 * @param message HealthCheckRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: grpc.health.v1.HealthCheckRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this HealthCheckRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for HealthCheckRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a HealthCheckResponse. */
            interface IHealthCheckResponse {

                /** HealthCheckResponse status */
                status?: (grpc.health.v1.HealthCheckResponse.ServingStatus|null);
            }

            /** Represents a HealthCheckResponse. */
            class HealthCheckResponse implements IHealthCheckResponse {

                /**
                 * Constructs a new HealthCheckResponse.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: grpc.health.v1.IHealthCheckResponse);

                /** HealthCheckResponse status. */
                public status: grpc.health.v1.HealthCheckResponse.ServingStatus;

                /**
                 * Creates a new HealthCheckResponse instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns HealthCheckResponse instance
                 */
                public static create(properties?: grpc.health.v1.IHealthCheckResponse): grpc.health.v1.HealthCheckResponse;

                /**
                 * Encodes the specified HealthCheckResponse message. Does not implicitly {@link grpc.health.v1.HealthCheckResponse.verify|verify} messages.
                 * @param message HealthCheckResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: grpc.health.v1.IHealthCheckResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified HealthCheckResponse message, length delimited. Does not implicitly {@link grpc.health.v1.HealthCheckResponse.verify|verify} messages.
                 * @param message HealthCheckResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: grpc.health.v1.IHealthCheckResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a HealthCheckResponse message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns HealthCheckResponse
                 * @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): grpc.health.v1.HealthCheckResponse;

                /**
                 * Decodes a HealthCheckResponse message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns HealthCheckResponse
                 * @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)): grpc.health.v1.HealthCheckResponse;

                /**
                 * Creates a HealthCheckResponse message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns HealthCheckResponse
                 */
                public static fromObject(object: { [k: string]: any }): grpc.health.v1.HealthCheckResponse;

                /**
                 * Creates a plain object from a HealthCheckResponse message. Also converts values to other types if specified.
                 * @param message HealthCheckResponse
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: grpc.health.v1.HealthCheckResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this HealthCheckResponse to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for HealthCheckResponse
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace HealthCheckResponse {

                /** ServingStatus enum. */
                enum ServingStatus {
                    UNKNOWN = 0,
                    SERVING = 1,
                    NOT_SERVING = 2,
                    SERVICE_UNKNOWN = 3
                }
            }

            /** Represents a Health */
            class Health extends $protobuf.rpc.Service {

                /**
                 * Constructs a new Health 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 Health 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): Health;

                /**
                 * If the requested service is unknown, the call will fail with status
                 * NOT_FOUND.
                 * @param request HealthCheckRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and HealthCheckResponse
                 */
                public check(request: grpc.health.v1.IHealthCheckRequest, callback: grpc.health.v1.Health.CheckCallback): void;

                /**
                 * If the requested service is unknown, the call will fail with status
                 * NOT_FOUND.
                 * @param request HealthCheckRequest message or plain object
                 * @returns Promise
                 */
                public check(request: grpc.health.v1.IHealthCheckRequest): Promise<grpc.health.v1.HealthCheckResponse>;

                /**
                 * Performs a watch for the serving status of the requested service.
                 * The server will immediately send back a message indicating the current
                 * serving status.  It will then subsequently send a new message whenever
                 * the service's serving status changes.
                 *
                 * If the requested service is unknown when the call is received, the
                 * server will send a message setting the serving status to
                 * SERVICE_UNKNOWN but will *not* terminate the call.  If at some
                 * future point, the serving status of the service becomes known, the
                 * server will send a new message with the service's serving status.
                 *
                 * If the call terminates with status UNIMPLEMENTED, then clients
                 * should assume this method is not supported and should not retry the
                 * call.  If the call terminates with any other status (including OK),
                 * clients should retry the call with appropriate exponential backoff.
                 * @param request HealthCheckRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and HealthCheckResponse
                 */
                public watch(request: grpc.health.v1.IHealthCheckRequest, callback: grpc.health.v1.Health.WatchCallback): void;

                /**
                 * Performs a watch for the serving status of the requested service.
                 * The server will immediately send back a message indicating the current
                 * serving status.  It will then subsequently send a new message whenever
                 * the service's serving status changes.
                 *
                 * If the requested service is unknown when the call is received, the
                 * server will send a message setting the serving status to
                 * SERVICE_UNKNOWN but will *not* terminate the call.  If at some
                 * future point, the serving status of the service becomes known, the
                 * server will send a new message with the service's serving status.
                 *
                 * If the call terminates with status UNIMPLEMENTED, then clients
                 * should assume this method is not supported and should not retry the
                 * call.  If the call terminates with any other status (including OK),
                 * clients should retry the call with appropriate exponential backoff.
                 * @param request HealthCheckRequest message or plain object
                 * @returns Promise
                 */
                public watch(request: grpc.health.v1.IHealthCheckRequest): Promise<grpc.health.v1.HealthCheckResponse>;
            }

            namespace Health {

                /**
                 * Callback as used by {@link grpc.health.v1.Health#check}.
                 * @param error Error, if any
                 * @param [response] HealthCheckResponse
                 */
                type CheckCallback = (error: (Error|null), response?: grpc.health.v1.HealthCheckResponse) => void;

                /**
                 * Callback as used by {@link grpc.health.v1.Health#watch}.
                 * @param error Error, if any
                 * @param [response] HealthCheckResponse
                 */
                type WatchCallback = (error: (Error|null), response?: grpc.health.v1.HealthCheckResponse) => void;
            }
        }
    }
}
